博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python+Selenium框架设计篇之6-一个类文件多个测试方法情况下测试固件的写法
阅读量:4301 次
发布时间:2019-05-27

本文共 3088 字,大约阅读时间需要 10 分钟。

      其实,到前面这一篇文章,简单的Python+Selenium自动化测试框架就已经算实现了。接下来的主要是介绍,unittest管理脚本,如何如何加载执行脚本,再就是采用第三方插件,实现输出html的测试报告。本文来介绍下,在同一个类中,多个测试函数时候,测试固件如何写

为了说明这个问题,我们在之前的测试类基础上,再写一个test_search2()的测试用例,看看会发生什么。

# coding=utf-8import timeimport unittestfrom framework.browser_engine import BrowserEnginefrom pageobjects.baidu_homepage import HomePageclass BaiduSearch(unittest.TestCase):    def setUp(self):        """        测试固件的setUp()的代码,主要是测试的前提准备工作        :return:        """        browse = BrowserEngine(self)        self.driver = browse.open_browser(self)    def tearDown(self):        """        测试结束后的操作,这里基本上都是关闭浏览器        :return:        """        self.driver.quit()    def test_baidu_search(self):        """        这里一定要test开头,把测试逻辑代码封装到一个test开头的方法里。        :return:        """        homepage = HomePage(self.driver)        homepage.type_search('selenium')  # 调用页面对象中的方法        homepage.send_submit_btn()  # 调用页面对象类中的点击搜索按钮方法        time.sleep(2)        homepage.get_windows_img()  # 调用基类截图方法        try:            assert 'selenium' in homepage.get_page_title()  # 调用页面对象继承基类中的获取页面标题方法            print ('Test Pass.')        except Exception as e:            print ('Test Fail.', format(e))    def test_search2(self):        homepage = HomePage(self.driver)        homepage.type_search('python')  # 调用页面对象中的方法        homepage.send_submit_btn()  # 调用页面对象类中的点击搜索按钮方法        time.sleep(2)        homepage.get_windows_img()  # 调用基类截图方法if __name__ == '__main__':    unittest.main()
      问题发现了没,我们的浏览器启动和关闭了两次,是不是这个问题?原来,没执行一次test开头的函数,都要执行一次测试固件,也就是说执行setUp()和()一次,如果有N个test开头的函数,测试固件就执行N次,我们到底有没有,只需要执行一次测试固件,支持执行多次测试函数。

     我们测试中,肯定需要,打开一个页面,然后测试这个页面的多个用例,才关闭这个页面,去测试其他页面,在unittest是有相关测试固件方法去支持这种行为。请看下面调整,自己对比下,能不能找出不同。

# coding=utf-8import timeimport unittestfrom framework.browser_engine import BrowserEnginefrom pageobjects.baidu_homepage import HomePageclass BaiduSearch(unittest.TestCase):    @classmethod    def setUpClass(cls):        """        测试固件的setUp()的代码,主要是测试的前提准备工作        :return:        """        browse = BrowserEngine(cls)        cls.driver = browse.open_browser(cls)    @classmethod    def tearDownClass(cls):        """        测试结束后的操作,这里基本上都是关闭浏览器        :return:        """        cls.driver.quit()    def test_baidu_search(self):        """        这里一定要test开头,把测试逻辑代码封装到一个test开头的方法里。        :return:        """        homepage = HomePage(self.driver)        homepage.type_search('selenium')  # 调用页面对象中的方法        homepage.send_submit_btn()  # 调用页面对象类中的点击搜索按钮方法        time.sleep(2)        homepage.get_windows_img()  # 调用基类截图方法        try:            assert 'selenium' in homepage.get_page_title()  # 调用页面对象继承基类中的获取页面标题方法            print ('Test Pass.')        except Exception as e:            print ('Test Fail.', format(e))    def test_search2(self):        homepage = HomePage(self.driver)        homepage.type_search('python')  # 调用页面对象中的方法        homepage.send_submit_btn()  # 调用页面对象类中的点击搜索按钮方法        time.sleep(2)        homepage.get_windows_img()  # 调用基类截图方法if __name__ == '__main__':    unittest.main()
运行一下,是不是,只需要打开和关闭浏览器一次,就执行了2个搜索用例?以后,项目中基本采用这种方法来执行同一个功能不同测试用例的编写。

转载地址:http://dwaws.baihongyu.com/

你可能感兴趣的文章
c++的构造函数初始化列表
查看>>
在C++里,有两种方法创建对象:
查看>>
浅谈C/C++中的指针和数组(一)
查看>>
C++中引用(&)的用法和应用实例
查看>>
C++中重载与重写函数区别及虚函数(转载)
查看>>
指针作为函数形参
查看>>
c#中的静态构造函数
查看>>
用c#绘制曲线图
查看>>
C++中重写与覆写(虚函数virtual)的区别
查看>>
duilib入门问题集
查看>>
堆栈数据代码区
查看>>
C语言指针定义变量方式
查看>>
C#中常用的几种读取XML文件的方法
查看>>
C++(1) 指针 new 和delete
查看>>
C++的new
查看>>
在C#中使用SerialPort类实现串口通信 遇到多线程问题
查看>>
堆栈 学习笔记
查看>>
堆栈平衡
查看>>
堆栈数据代码区
查看>>
关于指针,可能是网上最详细的讲解了
查看>>