关键词:
本文章会讲述以下几个内容:
1、Unittest 如何跳过用例
2、如何使用sys.argv
3、自动化测试项目中如何一套代码多套环境运行
一、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.001s
OK (skipped=1)
小结
从上面的例子可以了解,如何通过sys.argv传入环境参数,虽然上文是用百度首页作为例子,但同时引出,我们在做自动化测试时候,实现一套代码多环境运行思路
命令行带参数启动脚本,在Unittest中,可以实现不同的测试环境可以跳过用例
Github 源码地址:
https://github.com/SEtester/how_to_run_test_case
pythonunittest--testcase类总结4,skip跳过用例或者跳过测试类
跳过测试类: 跳过某个用例:如果发现是跳过时,就不会执行setup和teardown,就执行停止执行用例了 查看详情
pythonunittest报告样式不显示
Pythonunittest报告样式不显示的原因可能是因为没有正确配置unittest框架,或者没有正确安装unittest模块。正确配置unittest框架的方法是,在项目的根目录中创建一个名为“tests”的文件夹,并在其中创建一个“__init__.py”文件,以及... 查看详情
仅针对一个子类的 Python unittest 跳过测试
】仅针对一个子类的Pythonunittest跳过测试【英文标题】:Pythonunittestskiptestforonlyonesubclass【发布时间】:2019-02-2810:34:57【问题描述】:假设我的单元测试设置如下:importunittestclassBaseTest(object):defsetup(self):self.foo=Nonedeftest_something(self)... 查看详情
根据环境或测试或产品激活不同的属性文件
】根据环境或测试或产品激活不同的属性文件【英文标题】:Activatedifferentpropertyfilesdependingonenvironmentortestingorprod【发布时间】:2020-04-2622:13:04【问题描述】:我不知道如何在SpringBoot中加载带有oracle相关凭据的属性文件,并且在... 查看详情
java示例代码_Maven,Jenkins——如何根据不同的测试环境构建项目
java示例代码_Maven,Jenkins——如何根据不同的测试环境构建项目 查看详情
如何以编程方式跳过摩卡中的测试?
...有一段代码,其中某些测试在CI环境中总是会失败。我想根据环境条件禁用它们。如何在运行时执行期间以编程方式跳过mocha中的测试?【问题讨论】:以编程方式跳过测试由this.skip()中的mochajs.org/#inclusive-tests和@z 查看详情
根据条件应用不同的装饰器
】根据条件应用不同的装饰器【英文标题】:Applydifferentdecoratorsbasedonacondition【发布时间】:2016-11-2518:23:00【问题描述】:我正在使用单元测试和鼻子参数化,并希望根据条件将不同的装饰器应用于测试。我有一个测试,我想跳... 查看详情
springboot的profiles根据开发环境和测试环境载入不同的配置文件
参考:https://www.cnblogs.com/bjlhx/p/8325374.html1、需要有一个默认的配置文件,然后一个正式的配置文件,一个测试的配置文件。激活配置项,默认的配置文件application.properties也会加载进去的。编程的方式指定生效的profile。默认的配... 查看详情
用pythonunittest搭建自动化测试框架
unittest是xUnit系列框架中的一员,如果你了解xUnit的其他成员,那你用unittest来应该是很轻松的,它们的工作方式都差不多。unittest核心工作原理unittest中最核心的四个概念是:testcase,testsuite,testrunner,testfixture。下面... 查看详情
phpunit跳过具有不同测试用例之间依赖关系的测试
】phpunit跳过具有不同测试用例之间依赖关系的测试【英文标题】:phpunitskippingtestswithdependenciesbetweendifferenttestcases【发布时间】:2017-11-2414:09:16【问题描述】:对于集成测试,我想重用测试结果。依赖项是通过注解定义的。对于... 查看详情
如何根据当前平台跳过 xUnit 中的特定测试
】如何根据当前平台跳过xUnit中的特定测试【英文标题】:HowdoIskipspecifictestsinxUnitbasedoncurrentplatform【发布时间】:2011-05-2404:59:41【问题描述】:我有一个在Windows上构建的程序集我想在Linux的单声道上运行xUnit测试。但是,我发现... 查看详情
pythonunittest控制用例的执行顺序(代码片段)
Pythonunittest控制用例的执行顺序……直接上正文用例的执行顺序和书写次序无关,默认是根据ASCII码的顺序加载测试用例,所以执行顺序如下:基于unittest的机制,介绍2种控制用例执行顺序的方式:方式一:... 查看详情
pythonunittest控制用例的执行顺序(代码片段)
Pythonunittest控制用例的执行顺序……直接上正文用例的执行顺序和书写次序无关,默认是根据ASCII码的顺序加载测试用例,所以执行顺序如下:基于unittest的机制,介绍2种控制用例执行顺序的方式:方式一:... 查看详情
如何实现根据环境切换不同配置?(代码片段)
首发于公众号:BiggerBoy前言在企业开发中,系统的配置信息往往会分不同的环境,如开发环境、测试环境、生产环境。当我们使用nacos作为配置中心时,一定会遇到的问题就是在应用中配置nacos的server-addr时测试环境的nacos地址和... 查看详情
vue-cli根据不同的环境打包(代码片段)
根据项目需要,通过vue-cli中的npmrunbuild打包到不同的环境,例如测试环境,预发布环境,线上环境,根据process.env分别进行接口的调用vue-cli中build中build.jsrequire(‘./check-versions‘)()//process.env.NODE_ENV=‘production‘varora=require(‘ora‘)v... 查看详情
如何根据工作流变量部署到不同的环境?
】如何根据工作流变量部署到不同的环境?【英文标题】:Howtodeploytodifferentenviromentsbasedonworkflowvariables?【发布时间】:2022-01-1122:40:41【问题描述】:我找到了followingproposal并对其进行了测试(参见代码示例),但无法使其工作。... 查看详情
pythonunittest控制用例的执行顺序(代码片段)
Pythonunittest控制用例的执行顺序……直接上正文用例的执行顺序和书写次序无关,默认是根据ASCII码的顺序加载测试用例,所以执行顺序如下:基于unittest的机制,介绍2种控制用例执行顺序的方式:方式一:... 查看详情
pythonunittest控制用例的执行顺序(代码片段)
Pythonunittest控制用例的执行顺序……直接上正文用例的执行顺序和书写次序无关,默认是根据ASCII码的顺序加载测试用例,所以执行顺序如下:基于unittest的机制,介绍2种控制用例执行顺序的方式:方式一:... 查看详情