• 单元测试框架中测试用例的执行顺序


    一、用例用例全部执行与选择执行

    单元测试用例的执行顺序按照定义的用例的名称的编码大小,从小到大依次执行,因此一般通过后缀001、002...等来规划测试用例的执行顺序,例如:

    import unittest
    
    class F1(unittest.TestCase):
        def setUp(self):
            print('我已经做好了准备工作')
    
        def tearDown(self):
            print('已处理')
    
        def test_001(self):    #单独执行其中的一个用例,鼠标放在这行里,右键点击执行
            print('test001')
    
        def test_002(self):
            print('test002')
    
        def test_003(self):
            print('test003')
    
    if __name__ == '__main__':
        unittest.main(verbosity=2)    #执行所有的用例,鼠标放在这行里,右键点击执行

    鼠标放到main方法中,右键选择文件执行会执行所有的测试用例,结果为:

    如果只执行其中的一条用例则鼠标放在这个用例的方法中右键选择文件执行会只执行这一条用例

    # 执行所有用例的运行结果
    Testing started at 上午11:32 ...
    /Users/ligaijiang/PycharmProjects/interfaceTest2/venv/bin/python /Applications/PyCharm.app/Contents/helpers/pycharm/_jb_unittest_runner.py --path /Users/ligaijiang/PycharmProjects/interfaceTest2/pythonstudying/unittest/ut1.py
    Launching unittests with arguments python -m unittest /Users/ligaijiang/PycharmProjects/interfaceTest2/pythonstudying/unittest/ut1.py in /Users/ligaijiang/PycharmProjects/interfaceTest2/pythonstudying/unittest
    我已经做好了准备工作
    test001
    已处理
    我已经做好了准备工作
    test002
    已处理
    我已经做好了准备工作
    test003
    已处理
    
    
    Ran 3 tests in 0.002s
    
    OK
    
    Process finished with exit code 0

    二、单元测试用例的执行顺序

    执行以下测试用例,会先执行map再执行news,虽然news写在来前面

    import unittest
    from selenium import webdriver
    import time
    
    class F3(unittest.TestCase):
        def setUp(self):
            self.driver = webdriver.Firefox()
            self.driver.maximize_window()
            self.driver.implicitly_wait(30)
            self.driver.get('https://www.baidu.com/')
    
    
        def tearDown(self):
            self.driver.quit()
    
        def test_baidu_news(self):
            self.driver.find_element_by_link_text('新闻').click()
            time.sleep(5)
    
        def test_baidu_map(self):
            self.driver.find_element_by_partial_link_text('').click()
            time.sleep(5)
    
    if __name__ == '__main__':
        unittest.main(verbosity=2)  

    通过验证可以发现m的编码为109,n的编码为110,因此先执行的m开头的,再执行的n开头的

    Last login: Wed May 13 17:33:51 on ttys004
    (base) localhost:~ ligaijiang$ python
    Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 26 2018, 23:26:24) 
    [Clang 6.0 (clang-600.0.57)] on darwin
    Type "help", "copyright", "credits" or "license" for more information.
    >>> ord('n')
    110
    >>> ord('m')
    109
    >>> 

    三、单元测试用例使用套件控制浏览器的打开次数

    以下方式,浏览器会只打开一次,执行两个测试用例后关闭一次,结束:

    import unittest
    from selenium import webdriver
    import time
    
    
    class F2(unittest.TestCase):
        @classmethod
        def setUpClass(cls):
            cls.driver=webdriver.Firefox()
            cls.driver.maximize_window()
            cls.driver.implicitly_wait(30)
            cls.driver.get('https://www.baidu.com/')
    
        @classmethod
        def tearDownClass(cls):
            cls.driver.quit()
    
        def test_baidu_news_001(self):
            self.driver.find_element_by_link_text('新闻').click()
            time.sleep(10)
            self.driver.back()
    
    
        def test_baidu_map_002(self):
            self.driver.find_element_by_partial_link_text('').click()
            time.sleep(15)
            self.driver.back()
    
    if __name__ == '__main__':
        unittest.main(verbosity=2)    #如何执行所有的用例

    以下方式,浏览器会打开一次,执行用例001,关闭;浏览器再次打开,执行用例002,关闭

    import unittest
    from selenium import webdriver
    import time
    
    class F3(unittest.TestCase):
        def setUp(self):
            self.driver = webdriver.Firefox()
            self.driver.maximize_window()
            self.driver.implicitly_wait(30)
            self.driver.get('https://www.baidu.com/')
    
    
        def tearDown(self):
            self.driver.quit()
    
        def test_baidu_news_001(self):
            self.driver.find_element_by_link_text('新闻').click()
            time.sleep(5)
    
        def test_baidu_map_002(self):
            self.driver.find_element_by_partial_link_text('').click()
            time.sleep(5)
    
    if __name__ == '__main__':
        unittest.main(verbosity=2)  # 如何执行所有的用例
  • 相关阅读:
    【代码笔记】Java连连看项目的实现(1)——JTable 、TableModel的使用
    【代码笔记】多线程游戏开发——伏魔记:第一步——开始游戏界面实现(一)
    【代码笔记】Java基础:Java的方法和类
    【代码笔记】Java基础:类的继承(构造器)
    【代码笔记】XML深入学习:DTD约束与DTD语法(2)
    常见标签的全称
    CSS中margin与padding的区别
    jquery 执行语句无响应
    jquery autocomplete插件结合ajax使用
    在使用flask_Bootstrap的时候先加载了jquery-ui然后再加载jQuery,导致jQuery-ui无法使用。
  • 原文地址:https://www.cnblogs.com/jpr-ok/p/12890199.html
Copyright © 2020-2023  润新知