虽然现在用的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根据不同测试环境跳过用例详解的更多相关文章

  1. Python Unittest - 根据不同测试环境跳过用例详解

    本文章会讲述以下几个内容: 1.Unittest 如何跳过用例 2.如何使用sys.argv 3.自动化测试项目中如何一套代码多套环境运行 一.Unittest跳过用例 @unittest.skip( ...

  2. Appium+python自动化(二)- 环境搭建—下(超详解)

    简介 宏哥的人品还算说得过去,虽然很久没有搭建环境了,但是换了新电脑设备,一气呵成,将android的测试开发环境已经搭建准备完毕.上一篇android测试开发环境已经准备好, 那么接下来就是appi ...

  3. Appium+python自动化(一)- 环境搭建—上(超详解)

    简介 今天是高考各地由于降水,特别糟糕,各位考生高考加油,全国人民端午节快乐.最近整理了一下自动化的东西,先前整理的python接口自动化已经接近尾声.即将要开启新的征程和篇章(Appium& ...

  4. 第三百五十五节,Python分布式爬虫打造搜索引擎Scrapy精讲—scrapy信号详解

    第三百五十五节,Python分布式爬虫打造搜索引擎Scrapy精讲—scrapy信号详解 信号一般使用信号分发器dispatcher.connect(),来设置信号,和信号触发函数,当捕获到信号时执行 ...

  5. Node.js中的不安全跳转如何防御详解

    Node.js中的不安全跳转如何防御详解 导语: 早年在浏览器大战期间,有远见的Chrome认为要运行现代Web应用,浏览器必须有一个性能非常强劲的Java引擎,于是Google自己开发了一个高性能的 ...

  6. (十八)整合Nacos组件,环境搭建和入门案例详解

    整合Nacos组件,环境搭建和入门案例详解 1.Nacos基础简介 1.1 关键特性 1.2 专业术语解释 1.3 Nacos生态圈 2.SpringBoot整合Nacos 2.1 新建配置 2.2 ...

  7. linux环境下/etc/hosts文件详解

    linux环境下/etc/hosts文件详解 就没一个昵称能用关注 0.0632017.09.12 17:04:28字数 623阅读 27,096 介绍 hosts文件是linux系统中负责ip地址与 ...

  8. python接口自动化(四)--接口测试工具介绍(详解)

    简介 “工欲善其事必先利其器”,通过前边几篇文章的介绍,大家大致对接口有了进一步的认识.那么接下来让我们看看接口测试的工具有哪些. 目前,市场上有很多支持接口测试的工具.利用工具进行接口测试,能够提供 ...

  9. Shell环境变量与特殊变量详解

    1)变量类型 1)变量可分为俩类:环境变量(全局变量),和普通变量(局部变量), 环境变量也称为全局变量,可以在创建他们的Shell及其派生出来的任意子进程Shell中使用,环境变量又可以分为自定义环 ...

随机推荐

  1. 线性基(模板) LUOGU 3812

    题面 解题思路 线性基,是构造出一组数:ax,ax-1-.a1,ax的二进制最高位为x.这些数字能异或和可以表示原来所有数的异或和.其实相当于一个高斯消元的过程.所以我们按位枚举,如果这一位曾经没数, ...

  2. 在ubuntu中安装phpstorm

    安装参考网址 https://blog.csdn.net/mrgong_/article/details/77200225 注意:不需要安装java相关 激活phpstorm 2018 参考网址:ht ...

  3. TFS2013 微软源代码管理工具 安装与使用图文教程

    最近公司新开发一个项目要用微软的TFS2013进行项目的源代码管理,以前只是用过SVN,从来没有用过TFS,所以在网上百度.谷歌了好一阵子来查看怎么安装和配置,还好花了一天时间总算是初步的搞定了,下面 ...

  4. linux命令统计文件中某个字符串出现的次数

    1.使用grep linux grep命令在我的随笔linux分类里有过简单的介绍,这里就只简单的介绍下使用grep命令统计某个文件这某个字符串出现的次数,首先介绍grep命令的几个参数,详细参数请自 ...

  5. Scrapy下载中间件的优先级(神踏马值越小优先级越高)

    自从之前看的一篇讲Scrapy下载中间件的文章后,一直认为设置里下载中间件的优先级数值越小,越优先,最近要抓的网站反爬增强了,所以需要使用代理ip,但是由于使用的是免费代理以至于经常失效,需要对失效的 ...

  6. jqGrid 属性、事件全集

    <html> ... <table id="list1"></table> <div id="pager1">& ...

  7. iOS CALayer之CAEmitterLayer粒子发射器的神奇效果

    https://www.jianshu.com/p/c54ffd7412e7 想必以前QQ空间的点赞效果大家都知道吧,点赞之后按钮周围会有一圈爆裂的小圆点:还有微信的红包雨表情动画等,以及烟花,火焰效 ...

  8. SpringBoot防XSS攻击

    1 . pom中增加依赖 <!-- xss过滤组件 --> <dependency> <groupId>org.jsoup</groupId> < ...

  9. Luogu P1967 货车运输(Kruskal重构树)

    P1967 货车运输 题面 题目描述 \(A\) 国有 \(n\) 座城市,编号从 \(1\) 到 \(n\) ,城市之间有 \(m\) 条双向道路.每一条道路对车辆都有重量限制,简称限重.现在有 \ ...

  10. [Array]283. Move Zeroes

    Given an array nums, write a function to move all 0's to the end of it while maintaining the relativ ...