pytest_1安装和启动
一、安装和启动
1.1 安装pytest
1. 键入Ctrl+R,打开cmd,输入命令至python环境下(本机:D:\Python27>)
2. 在python环境下运行下面的命令即可安装pytest
#pip install -U pytest
3. 检查安装的pytest的版本信息是否正确
#pytest --version
1.2第一个测试Demo
1. 创建一个只有4行代码的简单函数:
def fun(x):
return x+1
def test_answer():
assert fun(3)==5
2. 使用pytest运行,首先需进入到文件所在位置(本机:F:\study\ Interface_automation\Interface automation),然后键入命令
#pytest jsonDemo.py
1. 如上图所示,这个结果是失败的,因为func(3)的返回值不是5
1.3运行多个测试
pytest会运行当前目录及子目录下所有以test_*.py和*_test.py命名的文件,文件匹配方式遵循Standard test discovery rules
1.4判断是否发生了指定的异常
1. 使用raises可以判断代码是否抛出了异常:
import pytest
def f():
raise SystemExit(1) def test_mytest():
with pytest.raises(SystemExit):
f()
2. 使用“quiet”模式来执行这个测试:如下图所示
1.5 将多个测试用例放在一个class中
1. 当需要开发多个测试用例的时候,可以将他们放在同一个class中,pytest可以简单的创建包含多个测试用例的class:
class TestClass(object):
def test_one(self):
x="this"
assert 'h' in x def test_two(self):
x='hello'
assert hasattr(x,'check')
2. pytest根据Conventions for Python test discovery查找所有的测试用例,所以可以找到所有以**test_**开头的测试函数,我们可以通过文件名来直接运行整个模块:
3. 如上图所示,第一个测试用例passed,第二个测试用例failed,可以直观的观察到测试用例中进行判断的中间值,这样可以帮助理解测试用例失败的原因。
1.6 为测试用例创建唯一的临时文件夹
1. pytest提供Builtin fixtures/function arguements来创建任意的资源,比如一个具有唯一的临时文件夹:
def test_needsfiles(tmpdir):
print tmpdir
assert 0
2. 如果函数的签名中(函数签名包括函数的参数和返回值,以及参数的封送顺序等等)包含参数tmpdir,pytest就会在执行测试用例之前查找并调用特定的fixture创建所需资源,在本例中,pytest会创建一个unique-per-test-invocation临时文件夹:
关于tmpdir的更多信息请参好Temporary directories and files通过下面的命令可以查看所有内置的pytest fixture:
键入命令:#pytest --fixtures,如下图所示
最新文章
- java.net.SocketException: Connection reset
- 关于《rsyslog+mysql+loganalyzer搭建日志服务器<;个人笔记>;》的反思
- 背景虚化 Google Camera App Nokia Refocus HTC One M8 的 Duo景深相机
- [MEAN Stack] First API -- 1. with Node.js, Express and MongoDB
- Nexus5如何手动OTA更新系统到4.4.3、4.4.4及常见问题回答
- 初级SQL开发汇总指南
- JavaScript: Class.method vs Class.prototype.method
- collection系列用法-namedtuple()
- hadoop2.x的变化
- 三种Webpack打包方式
- EasyPR源码剖析(9):字符识别
- Leetcode 中Linked List Cycle 一类问题
- delphi “div”、“mod”、“\”除法运算符的区别与使用方法(附带FORMAT使用方法)
- Delphi不注册COM直接使用ActiveX控件并绑定事件
- Starting MySQL ERROR! Couldn&#39;t find MySQL server (/usr/local/mysql/bin/mysqld_safe)
- coding云(git)远程创建版本库和上传文件
- 启动Solr时报 _version_ field must exist in schema 错误的解决方法
- 20145302张薇 Java第一周学习总结
- python SQLAchemy多外键关联
- jsp内置对象pageContext如何在Servlet中获取值
热门文章
- 小黄车ofo法人被限制出境,它究竟还能撑多久?
- php中限制ip段访问、禁止ip提交表单的代码
- 【hdu 6155】Subsequence Count
- 最长回文子串(动规,中心扩散法,Manacher算法)
- ES添加文档 踩坑之 —— The number of object passed must be even but was [1]
- tarjan算法比较详细的讲解&;&;tarjan常见疑难解答&;&;洛谷P2002 消息扩散题解
- MyEclipse开发秘籍——使用DevStyle Icon Designer(一)
- DevExpress ASP.NET v19.1版本亮点:Pivot Grid等控件
- spark读取hbase(NewHadoopAPI 例子)
- 对数据劫持 OR 数据代理 的研究------------引用