assert标签html,(五)WebDriver:断言和HTML测试报告

一、断言

在编写自动化测试脚本时,为了使“机器”去自动辨识test case的执行结果是True还是False,一般都需要在用例执行过程中获取一些信息,来判断用例的执行时成功还是失败;

判断成功失败与否,就涉及到断言。webdriver的断言使用有三种模式:操作(action)、辅助(accessors)、断言(assertion)。

1、操作(action)

模拟用户与Web应用程序的交互,一般用于操作应用程序的状态;

如点击链接,选择选项的方式进行工作;如果一个动作执行失败,或是有错误,当前的测试将会停止执行。

常见命令如下:

open(打开页面)

click(点击)

clickAndWait(点击并等待)

type(文本类型)

select(选择下拉菜单)

selectWindow(选择弹出窗口)

pause(等待指定时间,以毫秒为单位,即要睡眠的时间)

setSpeed(设定执行速度。以毫秒延迟间隔长度。默认没有延迟,即为0)

setTimeout(指定等待动作完成的等待时间。默认为30秒,需要等待的动作包括了OPEN 和WAITFOR)

goBack(模拟用户点击其浏览器上的“back”按钮)

close(模拟用户点击弹出窗体或表单标题栏上的”关闭”按钮)

2、辅助(accessors)

辅助工具,用于检查应用程序的状态并将结果存储到变量中;

如:storeElementPresent(locator,variableName)

其中参数locator表示元素定位器,variableName用于存储结果的变量名;

即将locator定位到的状态存储到variableName变量中,如果该元素出现返回true,否则返回false,可同断言一同使用。

3、断言(assertion)

验证应用程序的状态是否同所期望的一致。

常见的断言包括:验证页面内容,如标题是否为X或当前位置是否正确,或是验证该复选框是否被勾选。

常用断言如下:

assertLocation(判断当前是在正确的页面)

assertTitle(检查当前页面的title是否正确)

assertValue(检查input的值, checkbox或radio,有值为”on”无为”off”)

assertSelected(检查select的下拉菜单中选中是否正确)

assertSelectedOptions(检查下拉菜单中的选项的是否正确)

assertText(检查指定元素的文本)

assertTextPresent(检查在当前给用户显示的页面上是否有出现指定的文本)

assertTextNotPresent(检查在当前给用户显示的页面上是否没有出现指定的文本)

assertAttribute(检查当前指定元素的属性的值)

assertTable(检查table里的某个cell中的值)

assertEditable(检查指定的input是否可以编辑)

assertNotEditable(检查指定的input是否不可以编辑)

assertAlert(检查是否有产生带指定message的alert对话框)

waitForElementPresent (等待检验某元素的存在,为真时,则执行)

使用断言的注意点:

①不要使用断言作为公共方法的参数检查,公共方法的参数永远都要执行;

②断言语句不可以有任何边界效应,不要使用断言语句去修改变量和改变方法的返回值;

二、HTML测试报告

使用断言获得用例的执行结果后,需要有具象化、简洁明了的测试结果,比如:用例执行时间、失败用例数、失败的原因等,这时候,就需要用到测试报告;

HTML测试报告是python语言自带的单元测试框架,其扩展的HTMLTestRunner模块可用于生成易于使用的HTML测试报告。

1、HTMLTestRunner下载

下载完成后,将下载的文件保存到C盘的\Python35\Lib目录下(可以通过如下命令获取python安装目录):

①进入cmd命令行

②输入python

③输入inport sys

④输入print(sys.path)

1 C:\Users\dell>python2 Python 3.5.1 (v3.5.1:37a07cee5969, Dec 6 2015, 01:54:25) [MSC v.1900 64bit (AMD64)] on win323 Type "help", "copyright", "credits" or "license" formore information.4 >>> importsys5 >>> print(sys.path)6 [‘‘, ‘C:\\Users\\dell\\AppData\\Local\\Programs\\Python\\Python35\\python35.zip‘, ‘C:\\Users\\dell\\AppData\\Local\\Programs\\Python\\Python35\\DLLs‘,

‘C:\\Users\\dell\\AppData\\Local\\Programs\\Python\\Python35\\lib‘, ‘C:\\Users\\dell\\AppData\\Local\\Programs\\Python\\Python35‘, ‘C:\\Users\\dell\\

AppData\\Local\\Programs\\Python\\Python35\\lib\\site-packages‘]

2、修改HTMLTestRunner文件

因为HTMLTestRunner是基于python2开发的,为了使其支持python3的环境,需要对其中的部分内容进行修改,修改后的内容如下:

1 #HTMLTestRunner修改内容

2 #第94行

3 importio4 #第539行

5 self.outputBuffer =io.StringIO()6 #第631行

7 print(sys.stderr, ‘\nTime Elapsed: %s‘ % (self.stopTime-self.startTime))8 #第642行

9 if not cla inramp:10 #第766行

11 uo =o12 #第772行

13 ue = e

3、python文件执行与调用

①python文件的后缀为.py

②py文件既可以用来执行,就像一小段程序,也可以用来作为模块被导入

③在python中导入模块一般用import

代码如下:

1 from selenium importwebdriver2 importunittest3 importtime4

5 classMyTest(unittest.TestCase):6 defsetUp(self):7 self.driver = webdriver,chrome("F:\安装工具\python\chromedriver.exe")8 self.driver.maximize_window()9 self.driver.implicitly.wait(10)10 self.base_url = "http://www.baidu.com"

11

12 deftest_baidu(self):13 driver =self.driver14 driver.get(self.base_url + "/")15 driver.find_element_by_id("kw").clear()16 driver.find_element_by_id("kw").send_key("unittest")17 driver.find_element_by_id("su").click()18 time.sleep(2)19 title = assertEqual(title,"unittest_百度搜索")20

21 deftearDown(self):22 self.driver.quit()23

24 if __name__ == "__main__":25 unittest.main()

4、HTMLTestRunner测试报告

以上面的test_baidu.py文件为例子,生成HTMLTestRunner测试报告,代码如下:

1 from selenium importwebdriver2 importunittest3 from HTMLTestRunner importHTMLTestRunner4

5 classBaidu(unittest.TestCase):6 defsetUp(self):7 self.driver = webdriver.chrome("F:\安装工具\python\chromedriver.exe")8 self.driver.implicitly_wait(10)9 self.base_url = "http://www.baidu.com/"

10

11 deftest_baidu_search(self):12 driver =self.driver13 driver.get(self.base_url)14 driver.find_element_by_id("kw").send_key("HTMLTestRunner")15 driver.find_element_by_id("su").click()16

17 deftearDown(self):18 self.driver.quit()19

20 baidu = Baidu("test_baidu_serach")21

22 if __name__ == "__main__":23

24 testunit =unittest.TestSuite()25 testunit.addTest(baidu)26

27 #定义报告存放路径

28 fp = (‘./result.html‘, ‘wb‘)29 #定义测试报告

30 runner = HTMLTestRunner(stream=fp,31 title=‘百度搜索测试报告‘,32 description= ‘用例执行情况:‘)33 runner.run(testunit) #运行测试用例

34 fp.close() #关闭报告文件

代码简析:

①将HTMLTestRunner模块用import导入

②通过open()方法以二进制写模式打开当前目录下的result.html,如果没有则自动创建该文件

③调用HTMLTestRunner模块下的HTMLTestRunner类,stream指定测试报告文件,title用于定义测试报告的标题,description用于定义测试报告的副标题

④通过HTMLTestRunner的run方法运行测试套件中所组装的测试用例,最后通过close()关闭测试报告文件

以上为方便展示写的例子,没有太多实际意义,具体的还是需要在工作中使用实践,关于unittest框架,后续会慢慢介绍。。。

原文:http://www.cnblogs.com/imyalost/p/7282802.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值