本文章会讲述以下几个内容:

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

  1. # encoding:utf8
  2. import unittest
  3. class SkipExample(unittest.TestCase):
  4. @unittest.skip('用例 1 无条件跳过')
  5. def test_case_one(self):
  6. print('---用例 1 ---')
  7. @unittest.skipIf(2 > 1, '条件为True ,用例2 跳过')
  8. def test_case_two(self):
  9. print('---用例 2 ---')
  10. @unittest.skipUnless(2 < 1, '条件为False, 用例3 跳过')
  11. def test_case_three(self):
  12. print('---用例 3 ---')
  13. if __name__ == '__main__':
  14. unittest.main(verbosity=2)

运行结果:

  1. test_case_one (__main__.SkipExample) ... skipped '用例 1 无条件跳过'
  2. test_case_two (__main__.SkipExample) ... skipped '条件为True ,用例2 跳过'
  3. test_case_three (__main__.SkipExample) ... skipped '条件为False, 用例3 跳过'

二、如何使用sys.argv

  • sys.argv 是一个数组 第一个元素是程序本身路径
  • sys.argv 实现从程序外部向程序传递参数。

例:

how_to_use_argv.py

  1. #encoding:utf8
  2. from sys import argv
  3. print('argv是一个数组:',argv)

使用命令行运行上述脚本,外部传入参数:1 2 3 4

  1. python how_to_use_argv.py 1 2 3 4

运行结果

  1. argv是一个数组: ['how_to_use_argv.py', '1', '2', '3', '4']

小结:

  1. sys.argv 实现从程序外部向程序传递参数
  2. 传入的第一个参数为脚本文件名
  3. 传入程序的每一个参数以空格 隔开
  4. 传入程序的参数均以字符串的类型存储,命令行中不需要加引号

三、自动化测试项目中如何一套代码多套环境运行

需求1:一套代码可以测试多个环境,不希望每次测试不同环境的时候都要去改代码里面的URL,希望把代码里面的URL参数化

以UI自动化为例:

test_multiple_env.py

  1. # encoding:utf8
  2. from selenium import webdriver
  3. from sys import argv
  4. import unittest
  5. from time import sleep
  6. class TestEnv(unittest.TestCase):
  7. def setUp(self):
  8. self.url = argv[-1]
  9. print(self.url)
  10. self.driver = webdriver.Chrome()
  11. def test_load_page(self):
  12. self.driver.get(self.url)
  13. sleep(10)
  14. if __name__ == '__main__':
  15. suit = unittest.TestSuite()
  16. suit.addTest(TestEnv('test_load_page'))
  17. runner = unittest.TextTestRunner()
  18. runner.run(suit)

运行命令行:

  1. python test_multiple_env.py https://www.baidu.com/

运行结果:

打开浏览器,导航到百度页面

需求2:有些用例不能在预发布环境或者生产环境运行,怎么跳过该用例

UI自动化为例:

test_multiple_env_skip.py

  1. # encoding:utf8
  2. from selenium import webdriver
  3. from sys import argv
  4. import unittest
  5. from time import sleep
  6. URL = argv[-1]
  7. print('argv[-1] : ', URL)
  8. class TestEnv(unittest.TestCase):
  9. def setUp(self):
  10. self.driver = webdriver.Chrome()
  11. @unittest.skipIf(URL != 'https://www.baidu.com' ,'不是百度首页的URL,跳过用例test_load_page')
  12. def test_load_page(self):
  13. self.driver.get(URL)
  14. sleep(10)
  15. if __name__ == '__main__':
  16. suit = unittest.TestSuite()
  17. suit.addTest(TestEnv('test_load_page'))
  18. runner = unittest.TextTestRunner(verbosity=2)
  19. runner.run(suit)

运行命令行:

  1. python test_multiple_env_skip.py www.testclass.com

运行结果:

  1. argv[-1] : www.baidu.com
  2. test_load_page (__main__.TestEnv) ... skipped '不是百度首页的URL,跳过用例test_load_page'
  3. ----------------------------------------------------------------------
  4. Ran 1 test in 0.001s
  5. OK (skipped=1)

小结

  • 从上面的例子可以了解,如何通过sys.argv传入环境参数,虽然上文是用百度首页作为例子,但同时引出,我们在做自动化测试时候,实现一套代码多环境运行思路

  • 命令行带参数启动脚本,在Unittest中,可以实现不同的测试环境可以跳过用例

Github 源码地址:

https://github.com/SEtester/how_to_run_test_case

Python Unittest - 根据不同测试环境跳过用例详解的更多相关文章

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

    虽然现在用的Katalon,不过这篇Unittest基本的用法讲的还是不错的 转自:https://mp.weixin.qq.com/s/ZcrjOrJ1m-hAj3gXK9TjzQ 本文章会讲述以下 ...

  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. tomcat可以访问默认页面,但是无法访问webapp下的指定项目

     tomcat可以访问默认页面,但是无法访问webapp下的指定项目 1.注意下安装tomcat时的默认端口,8005,8009,8080,我这边没有修改,根据需要自行修改,确保tomcat可以启动 ...

  2. nvidia-docker 安装

    1.安装docker 官方网址安装说明 https://docs.docker.com/install/linux/docker-ce/ubuntu/ 2.ubuntu 14.04/16.04/18. ...

  3. 深入V8引擎-枚举+位运算实现参数配置

    不知不觉都快月底了,看了看上一篇还是6号写的,惭愧惭愧,说好的坚持.为了证明没有偷懒(其实还是沉迷了一会dota2),先上一个图自证清白. 基本上从初始化引擎,到Isolate.handleScope ...

  4. Log Structured Merge Trees(LSM) 原理

    http://www.open-open.com/lib/view/open1424916275249.html

  5. Design:目录

    ylbtech-Design:目录 1.返回顶部 1. http://idesign.qq.com/#!index/feed 2. https://www.behance.net/ 3. 2.返回顶部 ...

  6. TortoiseSVN 日常操作指南

    TortoiseSVN A Subversion client for Windows Stefan Küng Lübbe Onken Simon Large 2005/01/17 19:09:21 ...

  7. viewstate的基本用法

    转自:http://www.cnblogs.com/ooip/p/4743536.html 在web窗体将控件属性设置为runat=server时,这个控件会被添加一个隐藏属性_ViewState,_ ...

  8. 8、泛型程序设计与c++标准模板库5.函数对象

    1.函数对象 函数对象是STL提供的第四类主要组件,它使得STL的应用更加灵活方便,从而增强了算法的通用性.大多数STL算法可以用一个函数对象作为参数.所谓“函数对象”其实就是一个行为类似函数的对象, ...

  9. 注解:java 自定义注解应用实例

    本例子旨在使用自定义注解为实体打上标记,为自动生成 sql 提供依据,模拟 hibernate 的注解,至于注解的原理自己搜吧 1.定义 Table 注解 package test; import j ...

  10. sublime插件-OmniMarkupPreviewer浏览器打开报404解决办法

    Sublime Text > Preferences > Package Settings > OmniMarkupPreviewer > Settings - Default ...