Python Unittest根据不同测试环境跳过用例的方法
Python  /  管理员 发布于 7年前   179
前言
在利用单元测试框架执行测试用例的过程中,有时只需要执行一部分用例,或者跳过某些暂不需要执行的用例,python的unittest框架就内置这样的功能。
本文章会讲述以下几个内容:
1、Unittest 如何跳过用例
2、如何使用sys.argv
3、自动化测试项目中如何一套代码多套环境运行
一、Unittest跳过用例
例:
test_case_skip.py
# encoding:utf8import unittestclass 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
例:
how_to_use_argv.py
#encoding:utf8from sys import argvprint('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']
小结:
三、自动化测试项目中如何一套代码多套环境运行
需求1:一套代码可以测试多个环境,不希望每次测试不同环境的时候都要去改代码里面的URL,希望把代码里面的URL参数化
以UI自动化为例:
test_multiple_env.py
# encoding:utf8from selenium import webdriverfrom sys import argvimport unittestfrom time import sleepclass 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:utf8from selenium import webdriverfrom sys import argvimport unittestfrom time import sleepURL = 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)
小结
从上面的例子可以了解,如何通过sys.argv传入环境参数,虽然上文是用百度首页作为例子,但同时引出,我们在做自动化测试时候,实现一套代码多环境运行思路
命令行带参数启动脚本,在Unittest中,可以实现不同的测试环境可以跳过用例
Github 源码地址:https://github.com/SEtester/how_to_run_test_case (本地下载)
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家的支持。
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号