pytest:是一个框架,使构建简单和可扩展的测试变得容易。

安装:pip install -U pytest

检查安装:pytest --version

官方文档:https://docs.pytest.org/en/latest/contents.html#toc

Running pytest can result in six different exit codes:

Exit code 0: All tests were collected and passed successfully
Exit code 1: Tests were collected and run but some of the tests failed
Exit code 2: Test execution was interrupted by the user
Exit code 3: Internal error happened while executing tests
Exit code 4: pytest command line usage error
Exit code 5: No tests were collected

To stop the testing process after the first (N) failures:

pytest -x            # stop after first failure
pytest --maxfail=2 # stop after two failures

Pytest supports several ways to run and select tests from the command-line.(多种方式运行测试用例)

Run tests in a module:pytest test_mod.py

Run tests in a directory:pytest testing/

Run tests by keyword expressions:pytest -k "MyClass and not method"

This will run tests which contain names that match the given string expression, which can include Python operators that use filenames, class names and function names as variables. The example above will run TestMyClass.test_something but not TestMyClass.test_method_simple.

Run tests by node ids:

To run a specific test within a module:pytest test_mod.py::test_func

Another example specifying a test method in the command line:pytest test_mod.py::TestClass::test_method

Run tests by marker expressions:pytest -m slow

Will run all tests which are decorated with the @pytest.mark.slow decorator.

Run tests from packages:pytest --pyargs pkg.testing

This will import pkg.testing and use its filesystem location to find and run tests from.

@pytest.fixture(scope="module")
scope作用域: functionclassmodulepackage or sessionfunctionclassmodulepackage or session.

conftest.py: sharing fixture functions

If during implementing your tests you realize that you want to use a fixture function from multiple test files you can move it to a conftest.py file. You don’t need to import the fixture you want to use in a test, it automatically gets discovered by pytest. The discovery of fixture functions starts at test classes, then test modules, then conftest.py files and finally builtin and third party plugins.

详情:https://docs.pytest.org/en/latest/fixture.html#conftest-py-sharing-fixture-functions

以下是方程无解老师整理的内容:

Unittest:python内嵌的测试框架

编写简范:

  测试模块:import unittest

  测试类必须继承:unittest.TestCase

  测试方法必须必须以“test_”开头

  模块名字、类名不做要求

测试方法级别:setUp、tearDown

测试类级别:setUpClass、tearDownClass

模块级别:setUpModule、tearDownModule

更高级的框架:Pytest

  具有很多第三方插件:http://plugincompat.herokuapp.com/

编写规范:

  测试文件以“test_”开头(以"_test"结尾也行)

  测试类以"Test"开头,并且不能带有__init__方法

  测试函数以"test_"开头

部分应用:

 # encoding: utf-8

 import pytest

 # pytest:参数化
@pytest.mark.parametrize("x,y", [(3, 3), (3+5, 8), (6*2, 12), ("a", "a")])
def test_add(x, y):
assert x == y value = 0 def test_add1():
global value
value = 10
assert value == 10 def test_add2():
print("I am 2")
assert value == 10 @pytest.fixture()
def login_and_login_out():
return 1
# print("login start")
# yield
# print("login out") class TestSample:
def test_answer1(self, login_and_login_out):
result = login_and_login_out
assert result == 1 # fixtures名字调用
def test_answer2(self, login_and_login_out):
result = login_and_login_out
assert result == 1 # fixtures decorator调用
@pytest.mark.usefixtures("login_and_login_out")
def test_answer3(self):
assert 1 == 1 # fixtures autouse调用
@pytest.fixture(scope="module", autouse=True)
def login():
print("login -----------------")
yield
print("end login -------------") @pytest.fixture(scope="class", autouse=True)
def out():
print("login out start -------")
yield
print("login out end ---------") class TestSample2:
def test_answer4(self):
assert "hello 2019" == "hello 2019 " def test_answer5(self):
assert "fine" == "fine " class TestSample3:
def test_answer(self):
assert "welcome" == "welcome "

pytest执行用例的方式:

  1)执行一个module:pytest -v src/testcase/api/xxx.py

  2)执行一个类:pytest -v src/testcases/api/xxx.py::TestSample(类名)

  3)执行一个方法:pytest -v src/testcases/api/xxx.py::TestSample(类名)::test_xx(方法名)

  4)执行一个目录或package:pytest -v src/testcases/api

  5)通过标签来运行测试用例:pytest -m P0(标签名) src/testcases/api/

  通过pytest.main运行:pytest.main(['-v', '--instafail', 'testcases/api/xxx.py', '-m=P0'])

  

python--pytest库的更多相关文章

  1. python常用库

    本文由 伯乐在线 - 艾凌风 翻译,Namco 校稿.未经许可,禁止转载!英文出处:vinta.欢迎加入翻译组. Awesome Python ,这又是一个 Awesome XXX 系列的资源整理,由 ...

  2. python第三方库,你要的这里都有

    Python的第三方库多的超出我的想象. python 第三方模块 转 https://github.com/masterpy/zwpy_lst   Chardet,字符编码探测器,可以自动检测文本. ...

  3. python常用库(转)

    转自http://www.west999.com/info/html/wangluobiancheng/qita/20180729/4410114.html Python常用的库简单介绍一下 fuzz ...

  4. Python第三方库资源

    [转载]Python第三方库资源   转自:https://weibo.com/ttarticle/p/show?id=2309404129469920071093 参考:https://github ...

  5. 【转载】Python第三方库资源

    转自:https://weibo.com/ttarticle/p/show?id=2309404129469920071093 参考:https://github.com/jobbole/awesom ...

  6. Python全部库整理

    库名称简介 Chardet字符编码探测器,可以自动检测文本.网页.xml的编码. colorama主要用来给文本添加各种颜色,并且非常简单易用. Prettytable主要用于在终端或浏览器端构建格式 ...

  7. python 三方库字典

    参考:https://github.com/jobbole/awesome-python-cn 环境管理 管理 Python 版本和环境的工具 p:非常简单的交互式 python 版本管理工具.官网 ...

  8. python的库有多少个?python有多少个模块?

    这里列举了大概500个左右的库: !   Chardet字符编码探测器,可以自动检测文本.网页.xml的编码. colorama主要用来给文本添加各种颜色,并且非常简单易用. Prettytable主 ...

  9. python第三方库大全

    环境管理 管理 Python 版本和环境的工具 p:非常简单的交互式 python 版本管理工具.官网 pyenv:简单的 Python 版本管理工具.官网 Vex:可以在虚拟环境中执行命令.官网 v ...

  10. python+paramiko库+svn写的自动化部署脚本

    第一篇博文 直接开门见山的说了. 这是件什么事?:每次部署都是复制本地的文件粘贴到服务器端,因为路径复杂,所以费时且手工容易出漏洞. 一直在想有什么办法可以解决这种,因为以前在微软的一个牛人同事做过一 ...

随机推荐

  1. SQL优化|Java面试题

    转载:https://www.cnblogs.com/Jacck/p/8030455.html 数据库的优化问题 一.问题的提出 在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂 ...

  2. 我的notepad++

    我觉得,做开发的一定要有一个简单,但功能强大的文本编辑器.我比较喜欢notepad++,而且一直使用.准备通过这篇文章分享一下我的notepad++配置. 希望广大notepad++用户,如果有好的配 ...

  3. NFS 常见报错

    问题:客户端挂载共享目录后,不管是root用户还是普通用户,创建新文件时属主属组都为nobody解决方法:这种情况会出现在 centos6 或 NFS 4版本中,只要在挂载的时候加上 -o nfsve ...

  4. osgEarth设置模型旋转角度

    #include<windows.h> #include <osgViewer/Viewer> #include <osgEarthDrivers/gdal/GDALOp ...

  5. nginx优化 实现10万并发访问量

    一般来说nginx配置文件中对优化比较有作用的为以下几项:worker_processes 8;1 nginx进程数,建议按照cpu数目来指定,一般为它的倍数.worker_cpu_affinity ...

  6. Studio更新

    其实最主要的是下面三个步骤: 1.更新As工程为3.0 2.必须升级gradle到4.0以上 3.buildToolsVersion升级到26.0.0 4.在gradle.properties中配置版 ...

  7. c++对象的生命周期

    C++ 的new 运算子和C 的malloc 函数都是为了配置内存,但前者比之后者的优点是,new 不但配置对象所需的内存空间时,同时会引发构造式的执行. 所谓构造式(constructor),就是对 ...

  8. Linux记录用户shell命令

    在/etc/profile中添加下面内容: export LC_ALL=C TMOUT=3600 HISTFILESIZE=2000 HISTSIZE=2000 HISTTIMEFORMAT=&quo ...

  9. open-falcon之query

    功能 query组件,提供统一的绘图数据查询入口.query组件接收查询请求,根据一致性哈希算法去相应的graph实例查询不同metric的数据,然后汇总拿到的数据,最后统一返回给用户. 配置文件 { ...

  10. <转>13个实用的Linux find命令示例

    注:本文摘自青崖白鹿,翻译的妈咪,我找到了! -- 15个实用的Linux find命令示例, 感谢翻译的好文. 除了在一个目录结构下查找文件这种基本的操作,你还可以用find命令实现一些实用的操作, ...