这篇文章给大家分享的是有关Python中Unittest如何根据不同测试环境跳过用例的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
一、Unittest跳过用例
@unittest.skip(reason) , 直接跳过被装饰的用例 ,reason用于填写跳过用例的原因
@unittest.skipIf(condition, reason) , condition 如果为真,跳过被装饰的用例,reason用于填写跳过用例的原因
@unittest.skipUnless(condition, reason) , condition如果为假,跳过被装饰的用例,reason用于填写跳过用例的原因
例:
test_case_skip.py
# encoding:utf8 import unittest class SkipExample(unittest.TestCase): @unittest.skip('用例 1 无条件跳过') def test_case_one(self): print('---用例 1 ---') @unittest.skipIf(2 > 1, '条件为True ,用例2 跳过') def test_case_two(self): print('---用例 2 ---') @unittest.skipUnless(2 < 1, '条件为False, 用例3 跳过') def test_case_three(self): print('---用例 3 ---') if __name__ == '__main__': unittest.main(verbosity=2)
运行结果:
test_case_one (__main__.SkipExample) ... skipped '用例 1 无条件跳过'
test_case_two (__main__.SkipExample) ... skipped '条件为True ,用例2 跳过'
test_case_three (__main__.SkipExample) ... skipped '条件为False, 用例3 跳过'
二、如何使用sys.argv
sys.argv 是一个数组 第一个元素是程序本身路径
sys.argv 实现从程序外部向程序传递参数。
例:
how_to_use_argv.py
#encoding:utf8 from sys import argv print('argv是一个数组:',argv)
使用命令行运行上述脚本,外部传入参数:1 2 3 4
python how_to_use_argv.py 1 2 3 4
运行结果
argv是一个数组: ['how_to_use_argv.py', '1', '2', '3', '4']
小结:
sys.argv 实现从程序外部向程序传递参数
传入的第一个参数为脚本文件名
传入程序的每一个参数以空格 隔开
传入程序的参数均以字符串的类型存储,命令行中不需要加引号
三、自动化测试项目中如何一套代码多套环境运行
需求1:一套代码可以测试多个环境,不希望每次测试不同环境的时候都要去改代码里面的URL,希望把代码里面的URL参数化
以UI自动化为例:
test_multiple_env.py
# encoding:utf8 from selenium import webdriver from sys import argv import unittest from time import sleep class TestEnv(unittest.TestCase): def setUp(self): self.url = argv[-1] print(self.url) self.driver = webdriver.Chrome() def test_load_page(self): self.driver.get(self.url) sleep(10) if __name__ == '__main__': suit = unittest.TestSuite() suit.addTest(TestEnv('test_load_page')) runner = unittest.TextTestRunner() runner.run(suit)
运行命令行:
python test_multiple_env.py https://www.baidu.com/
运行结果:
打开浏览器,导航到百度页面
需求2:有些用例不能在预发布环境或者生产环境运行,怎么跳过该用例
UI自动化为例:
test_multiple_env_skip.py
# encoding:utf8 from selenium import webdriver from sys import argv import unittest from time import sleep URL = argv[-1] print('argv[-1] : ', URL) class TestEnv(unittest.TestCase): def setUp(self): self.driver = webdriver.Chrome() @unittest.skipIf(URL != 'https://www.baidu.com' ,'不是百度首页的URL,跳过用例test_load_page') def test_load_page(self): self.driver.get(URL) sleep(10) if __name__ == '__main__': suit = unittest.TestSuite() suit.addTest(TestEnv('test_load_page')) runner = unittest.TextTestRunner(verbosity=2) runner.run(suit)
运行命令行:
python test_multiple_env_skip.py www.testclass.com
运行结果:
argv[-1] : www.baidu.com
test_load_page (__main__.TestEnv) ... skipped '不是百度首页的URL,跳过用例test_load_page'----------------------------------------------------------------------
Ran 1 test in 0.001sOK (skipped=1)
感谢各位的阅读!关于“Python中Unittest如何根据不同测试环境跳过用例”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。