测试进阶课

Fiddler在selenium调试中的应用

2017-09-30  本文已影响0人  hslzyd

当初刚学selenium的时候,写一个验证搜索的test case搞了好久= =!小记录一下

    def keyword_search_assert(self, driver, keyword):
    #单个关键词搜索验证,通过遍历搜索结果每一行的第一列是否包含搜索关键词
    results = driver.find_elements_by_css_selector('#w1 > table > tbody > tr')
    for result in results:
        tds = result.find_elements_by_tag_name('td')
        col1 = tds[0].text
        if len(tds) == 1:
            #查询结果为空,则只有一列
            self.assertEqual(col1, u"没有找到数据。")
        else:
            #若有匹配结果,不止一列,取第一列做对比
            self.assertNotEqual(col1.find(keyword), -1)

    def keywords_search_assert(self, driver, keyword1, keyword2):
    #两个关键词搜索的验证
    results = driver.find_elements_by_css_selector('#w1 > table > tbody > tr')
    for result in results:
        tds = result.find_elements_by_tag_name('td')
        #搜索结果为空时(此时只有一列),缺省提示仍占用一行,所以count要加1
        if (len(tds) == 1):
            self.assertEqual(tds[0].text, u"没有找到数据。")
        else:
            col2 = tds[1].text
            col3 = tds[2].text
            self.assertNotEqual(col2.find(keyword1), -1)
            self.assertNotEqual(col3.find(keyword2), -1)

开始时想到用匹配搜索结果总数与结果中包含关键词的行数对比,后面才发觉好蠢,还是直接用assertEqual比较直接。其实还是因为不确定一个test case中能否用多个assert断言,因为目前搜索返回的结果总是对的,不好确认。后来想到了Fiddler的autoResponse功能,将搜索返回值修改,就能验证Fail的情况了,也验证了单个test case是可以使用多个assert断言的,且所有断言都pass结果才是pass,否则只要有一个fail,最后的结果就是fail。

  1. 先打开Fiddler然后在浏览器中执行一次搜索,把Fiddler中记录的session拖动到AutoResponser框中
    记得session要先decode,否则编辑response时候会乱码
image.png
  1. 右键编辑response,在TextView中修改搜索返回值使之不匹配,点击save保存
image.png
  1. 最后开启rules即可,执行test case就能验证fail的情况了
image.png
上一篇下一篇

猜你喜欢

热点阅读