Python Unittest根据不同测试环境跳过用例详解
虽然现在用的Katalon,不过这篇Unittest基本的用法讲的还是不错的
转自:https://mp.weixin.qq.com/s/ZcrjOrJ1m-hAj3gXK9TjzQ
本文章会讲述以下几个内容:
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
Python Unittest根据不同测试环境跳过用例详解的更多相关文章
- Python Unittest - 根据不同测试环境跳过用例详解
本文章会讲述以下几个内容: 1.Unittest 如何跳过用例 2.如何使用sys.argv 3.自动化测试项目中如何一套代码多套环境运行 一.Unittest跳过用例 @unittest.skip( ...
- Appium+python自动化(二)- 环境搭建—下(超详解)
简介 宏哥的人品还算说得过去,虽然很久没有搭建环境了,但是换了新电脑设备,一气呵成,将android的测试开发环境已经搭建准备完毕.上一篇android测试开发环境已经准备好, 那么接下来就是appi ...
- Appium+python自动化(一)- 环境搭建—上(超详解)
简介 今天是高考各地由于降水,特别糟糕,各位考生高考加油,全国人民端午节快乐.最近整理了一下自动化的东西,先前整理的python接口自动化已经接近尾声.即将要开启新的征程和篇章(Appium& ...
- 第三百五十五节,Python分布式爬虫打造搜索引擎Scrapy精讲—scrapy信号详解
第三百五十五节,Python分布式爬虫打造搜索引擎Scrapy精讲—scrapy信号详解 信号一般使用信号分发器dispatcher.connect(),来设置信号,和信号触发函数,当捕获到信号时执行 ...
- Node.js中的不安全跳转如何防御详解
Node.js中的不安全跳转如何防御详解 导语: 早年在浏览器大战期间,有远见的Chrome认为要运行现代Web应用,浏览器必须有一个性能非常强劲的Java引擎,于是Google自己开发了一个高性能的 ...
- (十八)整合Nacos组件,环境搭建和入门案例详解
整合Nacos组件,环境搭建和入门案例详解 1.Nacos基础简介 1.1 关键特性 1.2 专业术语解释 1.3 Nacos生态圈 2.SpringBoot整合Nacos 2.1 新建配置 2.2 ...
- linux环境下/etc/hosts文件详解
linux环境下/etc/hosts文件详解 就没一个昵称能用关注 0.0632017.09.12 17:04:28字数 623阅读 27,096 介绍 hosts文件是linux系统中负责ip地址与 ...
- python接口自动化(四)--接口测试工具介绍(详解)
简介 “工欲善其事必先利其器”,通过前边几篇文章的介绍,大家大致对接口有了进一步的认识.那么接下来让我们看看接口测试的工具有哪些. 目前,市场上有很多支持接口测试的工具.利用工具进行接口测试,能够提供 ...
- Shell环境变量与特殊变量详解
1)变量类型 1)变量可分为俩类:环境变量(全局变量),和普通变量(局部变量), 环境变量也称为全局变量,可以在创建他们的Shell及其派生出来的任意子进程Shell中使用,环境变量又可以分为自定义环 ...
随机推荐
- PAT甲级——A1047 Student List for Course
Zhejiang University has 40,000 students and provides 2,500 courses. Now given the registered course ...
- MATLAB---fopen、fprintf函数
1 概述 fopen()是个将数据按指定格式读入到matlab中的函数. fprintf()是个将数据按指定格式写入到文本文件中的函数. 2 用法 2.1 fopen函数 matlab中fopen函数 ...
- Object上的静态方法
内置提供了一个对象为 Object ,也被称之为是构造函数,用来创建对象用的.在 javascript 函数也是对象,是一种可被执行的对象,所以称Object为对象也是可以的.挂在函数上的方法,称之为 ...
- VC++ ComBox下拉菜单看不到值
在使用ComBox的时候,我是预先在属性页里面添加了数据的.但是在运行程序是发现,点击下拉时,一个值都看不到! 如图: 在这:http://blog.csdn.net/nma_123456/artic ...
- np.random.choice的用法
np.random.choice的用法 2018年01月15日 10:18:23 qfpkzheng 阅读数:6306 标签: 自己学习 更多 个人分类: 总结 import numpy as n ...
- 2016年省赛 G Triple Nim
2016年省赛 G Triple Nimnim游戏,要求开始局面为先手必败,也就是异或和为0.如果n为奇数,二进制下最后一位只有两种可能1,1,1和1,0,0,显然异或和为1,所以方案数为0如果n为偶 ...
- python 实现发送短信验证码
[说明]短信接口使用的是“聚合数据”上面的接口. 那么在使用接口前,需要在聚合数据上面注册,进行申请接口.当然在正式使用之前,我们可以使用申请免得的进行测试. 一.申请成功后,需做的准备工作如下: 1 ...
- java并发系列(七)-----ConcurrentHashMap原理分析(JDK1.8)
JDK1.8的实现已经摒弃了Segment的概念,而是直接用Node数组+链表+红黑树的数据结构来实现,并发控制使用Synchronized和CAS来操作,整个看起来就像是优化过且线程安全的HashM ...
- linux把普通用户添加到sudo组
一.linux下把普通用户添加到sudo组的方式: 1. root权限下, 先cd到/etc目录下 2. 由于sudoers文件为只读权限,所以需要添加写入权限,chmod u+w sudoers 3 ...
- python 基础(while 循环、格式化输出、运算符、编码初识)
while循环 break 终止当前循环 count = 1 while count < 3: print(count) count += 1 break # while循环中一旦代码执行到br ...