一、安装和启动

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,如下图所示

 

最新文章

  1. java.net.SocketException: Connection reset
  2. 关于《rsyslog+mysql+loganalyzer搭建日志服务器<个人笔记>》的反思
  3. 背景虚化 Google Camera App Nokia Refocus HTC One M8 的 Duo景深相机
  4. [MEAN Stack] First API -- 1. with Node.js, Express and MongoDB
  5. Nexus5如何手动OTA更新系统到4.4.3、4.4.4及常见问题回答
  6. 初级SQL开发汇总指南
  7. JavaScript: Class.method vs Class.prototype.method
  8. collection系列用法-namedtuple()
  9. hadoop2.x的变化
  10. 三种Webpack打包方式
  11. EasyPR源码剖析(9):字符识别
  12. Leetcode 中Linked List Cycle 一类问题
  13. delphi “div”、“mod”、“\”除法运算符的区别与使用方法(附带FORMAT使用方法)
  14. Delphi不注册COM直接使用ActiveX控件并绑定事件
  15. Starting MySQL ERROR! Couldn't find MySQL server (/usr/local/mysql/bin/mysqld_safe)
  16. coding云(git)远程创建版本库和上传文件
  17. 启动Solr时报 _version_ field must exist in schema 错误的解决方法
  18. 20145302张薇 Java第一周学习总结
  19. python SQLAchemy多外键关联
  20. jsp内置对象pageContext如何在Servlet中获取值

热门文章

  1. 小黄车ofo法人被限制出境,它究竟还能撑多久?
  2. php中限制ip段访问、禁止ip提交表单的代码
  3. 【hdu 6155】Subsequence Count
  4. 最长回文子串(动规,中心扩散法,Manacher算法)
  5. ES添加文档 踩坑之 —— The number of object passed must be even but was [1]
  6. tarjan算法比较详细的讲解&&tarjan常见疑难解答&&洛谷P2002 消息扩散题解
  7. MyEclipse开发秘籍——使用DevStyle Icon Designer(一)
  8. DevExpress ASP.NET v19.1版本亮点:Pivot Grid等控件
  9. spark读取hbase(NewHadoopAPI 例子)
  10. 对数据劫持 OR 数据代理 的研究------------引用