700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > python3.5+selenium3.4自动化测试9_selenium框架2.0-unittest(上)

python3.5+selenium3.4自动化测试9_selenium框架2.0-unittest(上)

时间:2023-10-16 08:51:17

相关推荐

python3.5+selenium3.4自动化测试9_selenium框架2.0-unittest(上)

框架2.0_unittest

今天讲的是unittest单元测试框架,在框架1.0的学习中我们不需要去理解什么类和函数,但是到2.0就要开始接触类的继承和函数的调用。

先上个之前的例子

# _*_ coding: utf-8 _*_from selenium import webdriverfrom mon.by import Byfrom mon.keys import Keysfrom selenium.webdriver.support.ui import Selectfrom mon.exceptions import NoSuchAttributeExceptionimport unittest,time,refrom time import strftime, localtimefrom datetime import datetimeimport HTMLTestRunnerclass LoginReset(unittest.TestCase):def setUp(self):self.driver=webdriver.Chrome()self.driver.implicitly_wait(30)self.base_url="http://192.168.1.131"self.verificationErrors=[]self.accept_next_alert=Truedef test_loginreset(self):'''1.2.验证登陆界面的reset按钮'''driver=self.driverdriver.get(self.base_url+"/")try:driver.implicitly_wait(10) #智能等待10driver.find_element_by_id("username").send_keys("admin")#见图一by_iddriver.find_element_by_id("secret").send_keys("password")driver.find_element_by_id("reset_button").click()time.sleep(10)#等待10except:driver.get_screenshot_as_file(u"D:/python/selenium/error_png/1.login/1.2/%s.png" % datetime.now().strftime("%Y%m%d.%H%M%S.%f")[:-3])def tearDown(self):time.sleep(3)self.driver.quit()self.assertEqual([],self.verificationErrors)if __name__=="__main__":suite=unittest.TestSuite()suite.addTest(LoginReset("test_loginreset"))unittest.TextTestRunner().run(suite)

1234567891011121314151617181922232425262728293031323334353637383940414243444546474849505152535455565758596061

掌握的技能

1.unittest框架构成,多看下selenium ide录制后的脚本

2.unittest可以理解为由TestCase+TestResult这两个模块构成,通过执行的是TestCase中的run方法,并把结果给TestResult(或它的子类)

3.setUp()和setUp()

setUp()方法中进行测试前的初始化工作,

tearDown()方法中执行测试后的清除工作。

setUp()和tearDown()都是TestCase类中定义的方法 ,这个地方从代码中可以看出很多时候是在执行打开浏览器和关闭浏览器的操作,但是这个是每执行一个case都要执行一次,这个地方可以思考如何把这两个也写到一个继承testcase类的类,然后我们的框架在继承这个类,这部分后面详解

4.setUpClass()和tearDownClass()

setUpClass()在一个测试类中在所有test开始之前,执行一次且必须使用到Testsuite(只有在TestSuite的run方法里面才对其调用)tearDownClass()在一个测试类中在所有test结束之后,执行一次且必须使用到Testsuite(只有在TestSuite的run方法里面才对其调用),简单说这两个函数就是为了执行所有case过程中只打开一次浏览器和关闭一次浏览器,跟setup()和tearDown()有区别

5.TestSuite可以理解是包含所有测试用例的一个容 器

6.TestResult和HTMLTestRunner,TextTestRunner,

每次执行用例时,都会把执行结果保存到TestResult中,

textTestRunner这个类,在开始就使用了类TextTestResult,而这个类也是继承TestResult,而后在执行的过程中最终把TextTestResult实例对象传递给TestCase的run方法;

HTMLTestRunner模块也是在继承在TestResult类的基础上的

7.创建多个以test开头的测试用例进行测试,这个可以查看之前写过python3.5+selenium3.4自动化测试4_随机组合的用户名和密码登陆

补充下第3点后面的重新构建一个类和调用,刚才在前文的代码就可以分为两部分,先创建一个mytest.py文件

# _*_ coding: utf-8 _*_from selenium import webdriverfrom mon.by import Byfrom mon.keys import Keysfrom selenium.webdriver.support.ui import Selectfrom mon.exceptions import NoSuchAttributeExceptionimport unittest,time,refrom time import strftime, localtimefrom datetime import datetimeclass MyTest(unittest.TestCase):"""The base class is for all testcase."""def setUp(self):self.driver=webdriver.Chrome()self.driver.implicitly_wait(30)self.base_url="http://192.168.1.131"self.verificationErrors=[]self.accept_next_alert=Truedef tearDown(self):time.sleep(3)self.driver.quit()self.assertEqual([],self.verificationErrors)

12345678910111213141516171819222324252627

继承Mytest这个类

# _*_ coding: utf-8 _*_from selenium import webdriverfrom mon.by import Byfrom mon.keys import Keysfrom selenium.webdriver.support.ui import Selectfrom mon.exceptions import NoSuchAttributeExceptionimport unittest,time,refrom time import strftime, localtimefrom datetime import datetimeimport HTMLTestRunnerimport mytestclass LoginReset(mytest.Mytest):def test_loginreset(self):'''1.2.验证登陆界面的reset按钮'''driver=self.driverdriver.get(self.base_url+"/")try:driver.implicitly_wait(10) #智能等待10driver.find_element_by_id("username").send_keys("admin")#见图一by_iddriver.find_element_by_id("secret").send_keys("password")driver.find_element_by_id("reset_button").click()time.sleep(10)#等待10except:driver.get_screenshot_as_file(u"D:/python/selenium/error_png/1.login/1.2/%s.png" % datetime.now().strftime("%Y%m%d.%H%M%S.%f")[:-3])if __name__=="__main__":suite=unittest.TestSuite()suite.addTest(LoginReset("test_loginreset"))unittest.TextTestRunner().run(suite)

12345678910111213141516171819222324252627282930313233343536373839404142434445464748495051525354

这样就可以在任意时候统一修改浏览器和网址

/qingche456/article/details/77203586

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。