一个pytest插件,用于组织长期测试(命名研究),而不干扰常规测试
pytest-stud的Python项目详细描述
#pytest study
一个pytest插件,用于组织长期运行的测试(命名为*studies*),而不干扰常规测试
我们只想在所有项目测试都通过的情况下执行长过程。
`pytest`为创建测试套件、并行执行、报表、命令行、ci集成的ide等提供了强大的支持,因此我们的想法是在test from、group中编写这些长计算代码。他们在*studios*中使用一个插件来扩展pytest,该插件允许我们:
-忽略这些长时间的计算*studies*并只运行常规的测试。
-对所有涉及的测试进行排序,这样*study*将仅在通过依赖项时执行。
-在简单易行。
-不要干扰py test的正常使用。
稍后重新排序
def test_independent():
"常规隔离测试"
时间。睡眠(0.05)
标记为研究的测试将不会执行,除非在命令行中通过--runstudy
@pytest.mark.study
def test_foo():
"这是属于默认研究"
时间。睡眠(0.1)
打印"在foo测试中!
断言为真
@pytest.mark.study
def test\u study\u one():
"这是一个长期计算测试,只有通过了以前的任何测试,才会执行此测试。
""time.sleep(0.2)
打印"Study 1 Hello World!"
```
(未显示其他选项)…
("all"运行
all)。默认选择"无"。
````
>执行显示钩子跟踪的pytest会产生如下结果;
```bash
$pytest--duration=10--show\order
````bash
$pytest--bash
$pytest--duration=10--show\order
===========测试会话开始================================================
===============Linux2平台--python 2.7.13,pytest-3.2.2,py-1.4.34,pluggy-0.4.0
插件:study-0.12,timeout-1.2.0,testmon-0.9.6,race-0.1.1,pep8-1.0.6,cov-2.5.1,colordots-0.1,依赖性-0.2
收集了3项
+0[]测试/测试研究。py:独立测试
-1[默认]测试/测试研究。py:测试foo
-2[默认]测试/测试研究.py:测试研究一
测试/测试研究.py.
===================================================================================================================================================================测试/测试研究.py::test独立
0.00s独立测试/测试研究.py::test独立
0.00s独立测试/测试研究.py::test独立
=======1分0.08秒通过的0.08秒的0.08秒的0.08秒的0.08秒的0.08秒的1分通过的0.08秒的0.08秒的0=======================================================================================已被调用(注意"call"标记)和其他的从执行中被跳过。
现在,用`--runstudy=all`执行pytest我们得到的展示:
``bash
$pytest--duration=10--show\order--runstudy=all
>```bash
$pytest--duration=10--show\order--runstudy=all
==br/>============================================================================br/>Linux2平台--python 2.7.13,pytest-3.2.2,py-1.4.34,pluggy-0.4.0
插件:study-0.12,timeout-1.2.0,testmon-0.9.6,race-0.1.1,pep8-1。0.6,COV-2.5.1,色点-0.1,相关性-0.2
收集了3项
+0[]测试/测试研究。py:独立测试
+1[默认]测试/测试研究。py:测试foo
+2[默认]测试/测试研究。py:测试研究之一
测试/测试研究研究。py…
======================================================================
0.20s呼叫测试/测试研究。py::测试研究一
===========================================================调用tests/test_studies.py::test_foo
0.05s调用测试/测试研究。py::独立测试
0.00s设置测试/测试研究。py::独立测试
0.00s拆卸测试/测试研究。py::独立测试
0.00s设置测试/测试研究。py::独立测试
0.00s设置测试/测试研究。py::独立测试
0.00s拆卸考试/测试研究。py::test_foo
0.00s自学考试/测试研究。py::test_学习一次考试
============3次考试成绩0.38秒0.38秒0.38秒0.38秒3次考试成绩=======================
================================================================================="foo()"和"test\u study\u one()"也被调用。
请注意`+`每个测试开始时的符号由"--显示顺序"选项显示。
默认优先级为1000,因此,任何较低的值都将首先执行,反之亦然。
pytest
导入时间
time.sleep(0.05)
断言为真
@pre(name='ai',order=5)
def test_gather_info():
"人工智能研究的另一个先决条件"
time.sleep(0.1)
@study(name='ai')
def test_study_one():
"这是一个很长的计算研究,只有通过test_gather_info()和test_foo()后才能执行。"(按顺序)
"
时间。睡眠(0.2)
打印"学习1 Hello World!"
@pre
def test_bar():
"这是属于‘默认’研究的先决条件测试"
time.sleep(0.15)
打印"内部测试!"
断言为真
@pre(order=5)
def test_prior_bar():
"这是执行pre test_bar()的先决条件"
time.sleep(0.15)
@study(order=1)
def test_study_two():
"本工作室将在test_study_one之前执行,因为
我们改变了订单。调用前将执行所有test_study_one()先决条件,但不执行test_study_one()先决条件。
这允许尽快执行研究。
"
time.sleep(0.3)
打印"Study 2 Hello World again!"
`````
``bash
$pytest--duration=10--show\u order
``bash
$pytest--duration=10--show\u order
>
```bash
``bash
$pytest
>$pytest duration=10--show\order
```````bash ```bash
``bash
``bash
===
Linux2平台--python 2.7.13,pytest-3.2.2,py-1.4.34,pluggy-0.4.0
插件:study-0.12,timeout-1.2.0,testmon-0.9.6,race-0.1.1,pep8-1.0.6,cov-2.5.1,colordots-0.1,dependency-0。2
收集了7项
+0[]测试/测试研究。py:独立于测试的
-1[默认]测试/测试研究。py:测试前条
-2[默认]测试/测试研究。py:测试条
-3[默认]py:test研究2
-4[ai]测试/测试研究。py:test研究2
-5[ai]测试/测试研究。py:test研究6[ai]测试/测试研究。py:test研究1
-6[ai]测试/测试研究。py:test研究1
=========sloo=sloo-2
=============sloo==sloo==sloo==br/>-2
-5[ai]测试/测试研究5[ai]测试/测试研究5[ai]测试/测试研究。py:test西10测试持续时间===============================br/>0.05s呼叫测试/测试研究.py::独立于测试研究.py::独立于测试研究.py::独立于测试研究独立
0.00s独立测试/测试研究.py::独立于测试研究.py::独立于测试研究.py::独立于测试研究.py::独立于测试研究.py::独立于测试研究.py::独立于测试研究.py::独立于测试研究.py===================================0.0 0 0 0 0 0 0 0 0 0 0 0.08秒一个或多个研究,我们可以使用与工作室名称匹配的正则表达式来运行一个或多个研究。
$pytest--duration=10--点播订单——RunStudy='ai'
====================================================================================
=>Linux2平台——Python 2.7.13,Pytest-3.2.2.2,Py-1.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.4.4.4.4.34,Pluggy-0.4.4.4.0
插件:Study-0 1.2.0、testmon-0.9.6、race-0.1.1、pep8-1.0.6、cov-2.5.1,彩色点-0.1,依赖性-0.2
收集了7项
+0[]测试/测试研究。py:独立测试
+1[ai]测试/测试研究。py:测试收集信息
+2[ai]测试/测试研究。py:测试foo
+3[测试/测试研究。py:测试研究一项
-4[默认]测试/测试研究。py:测试研究一项
-5[默认]测试/测试研究。py:测试研究一项
-6[默认]测试/测试研究。py:测试研究两项
>
=========================================================================================================最慢的10次试验持续时间=========br/>0.20s呼叫测试/测试研究。py::测试研究1
0.10s呼叫测试/测试研究。py::测试foo
0.10s呼叫测试/测试研究。py::测试收集信息
0.05s呼叫测试/测试研究。py::测试独立
0.00s设置测试/测试研究。py::独立于测试研究
0.00s设置测试/测试研究。py::独立于测试研究
0.00s设置测试/测试研究。py::独立于测试研究
0.00s设置测试/测试研究。py::测试研究
0.00s拆卸测试/测试研究。py::测试研究
0.00s拆卸测试测试/测试研究。py::独立于测试的测试
==4个0.48秒通过了0.48秒=4个0.48秒通过了0.48秒====4个0.48秒中的4个0.48秒====================================
;安装
==``
=========>br/>=>$pip安装py测试研究
/>```
或自行下载并改进代码:)安装在主目录中的开发模式
```
python setup.py develop--user
```
\python版本
一个pytest插件,用于组织长期运行的测试(命名为*studies*),而不干扰常规测试
我们只想在所有项目测试都通过的情况下执行长过程。
`pytest`为创建测试套件、并行执行、报表、命令行、ci集成的ide等提供了强大的支持,因此我们的想法是在test from、group中编写这些长计算代码。他们在*studios*中使用一个插件来扩展pytest,该插件允许我们:
-忽略这些长时间的计算*studies*并只运行常规的测试。
-对所有涉及的测试进行排序,这样*study*将仅在通过依赖项时执行。
-在简单易行。
-不要干扰py test的正常使用。
稍后重新排序
def test_independent():
"常规隔离测试"
时间。睡眠(0.05)
标记为研究的测试将不会执行,除非在命令行中通过--runstudy
@pytest.mark.study
def test_foo():
"这是属于默认研究"
时间。睡眠(0.1)
打印"在foo测试中!
断言为真
@pytest.mark.study
def test\u study\u one():
"这是一个长期计算测试,只有通过了以前的任何测试,才会执行此测试。
""time.sleep(0.2)
打印"Study 1 Hello World!"
```
(未显示其他选项)…
("all"运行
all)。默认选择"无"。
````
>执行显示钩子跟踪的pytest会产生如下结果;
```bash
$pytest--duration=10--show\order
````bash
$pytest--bash
$pytest--duration=10--show\order
===========测试会话开始================================================
===============Linux2平台--python 2.7.13,pytest-3.2.2,py-1.4.34,pluggy-0.4.0
插件:study-0.12,timeout-1.2.0,testmon-0.9.6,race-0.1.1,pep8-1.0.6,cov-2.5.1,colordots-0.1,依赖性-0.2
收集了3项
+0[]测试/测试研究。py:独立测试
-1[默认]测试/测试研究。py:测试foo
-2[默认]测试/测试研究.py:测试研究一
测试/测试研究.py.
===================================================================================================================================================================测试/测试研究.py::test独立
0.00s独立测试/测试研究.py::test独立
0.00s独立测试/测试研究.py::test独立
=======1分0.08秒通过的0.08秒的0.08秒的0.08秒的0.08秒的0.08秒的1分通过的0.08秒的0.08秒的0=======================================================================================已被调用(注意"call"标记)和其他的从执行中被跳过。
现在,用`--runstudy=all`执行pytest我们得到的展示:
``bash
$pytest--duration=10--show\order--runstudy=all
>```bash
$pytest--duration=10--show\order--runstudy=all
==br/>============================================================================br/>Linux2平台--python 2.7.13,pytest-3.2.2,py-1.4.34,pluggy-0.4.0
插件:study-0.12,timeout-1.2.0,testmon-0.9.6,race-0.1.1,pep8-1。0.6,COV-2.5.1,色点-0.1,相关性-0.2
收集了3项
+0[]测试/测试研究。py:独立测试
+1[默认]测试/测试研究。py:测试foo
+2[默认]测试/测试研究。py:测试研究之一
测试/测试研究研究。py…
======================================================================
0.20s呼叫测试/测试研究。py::测试研究一
===========================================================调用tests/test_studies.py::test_foo
0.05s调用测试/测试研究。py::独立测试
0.00s设置测试/测试研究。py::独立测试
0.00s拆卸测试/测试研究。py::独立测试
0.00s设置测试/测试研究。py::独立测试
0.00s设置测试/测试研究。py::独立测试
0.00s拆卸考试/测试研究。py::test_foo
0.00s自学考试/测试研究。py::test_学习一次考试
============3次考试成绩0.38秒0.38秒0.38秒0.38秒3次考试成绩=======================
================================================================================="foo()"和"test\u study\u one()"也被调用。
请注意`+`每个测试开始时的符号由"--显示顺序"选项显示。
默认优先级为1000,因此,任何较低的值都将首先执行,反之亦然。
pytest
导入时间
time.sleep(0.05)
断言为真
@pre(name='ai',order=5)
def test_gather_info():
"人工智能研究的另一个先决条件"
time.sleep(0.1)
@study(name='ai')
def test_study_one():
"这是一个很长的计算研究,只有通过test_gather_info()和test_foo()后才能执行。"(按顺序)
"
时间。睡眠(0.2)
打印"学习1 Hello World!"
@pre
def test_bar():
"这是属于‘默认’研究的先决条件测试"
time.sleep(0.15)
打印"内部测试!"
断言为真
@pre(order=5)
def test_prior_bar():
"这是执行pre test_bar()的先决条件"
time.sleep(0.15)
@study(order=1)
def test_study_two():
"本工作室将在test_study_one之前执行,因为
我们改变了订单。调用前将执行所有test_study_one()先决条件,但不执行test_study_one()先决条件。
这允许尽快执行研究。
"
time.sleep(0.3)
打印"Study 2 Hello World again!"
`````
``bash
$pytest--duration=10--show\u order
``bash
$pytest--duration=10--show\u order
>
```bash
``bash
$pytest
>$pytest duration=10--show\order
```````bash ```bash
``bash
``bash
===
Linux2平台--python 2.7.13,pytest-3.2.2,py-1.4.34,pluggy-0.4.0
插件:study-0.12,timeout-1.2.0,testmon-0.9.6,race-0.1.1,pep8-1.0.6,cov-2.5.1,colordots-0.1,dependency-0。2
收集了7项
+0[]测试/测试研究。py:独立于测试的
-1[默认]测试/测试研究。py:测试前条
-2[默认]测试/测试研究。py:测试条
-3[默认]py:test研究2
-4[ai]测试/测试研究。py:test研究2
-5[ai]测试/测试研究。py:test研究6[ai]测试/测试研究。py:test研究1
-6[ai]测试/测试研究。py:test研究1
=========sloo=sloo-2
=============sloo==sloo==sloo==br/>-2
-5[ai]测试/测试研究5[ai]测试/测试研究5[ai]测试/测试研究。py:test西10测试持续时间===============================br/>0.05s呼叫测试/测试研究.py::独立于测试研究.py::独立于测试研究.py::独立于测试研究独立
0.00s独立测试/测试研究.py::独立于测试研究.py::独立于测试研究.py::独立于测试研究.py::独立于测试研究.py::独立于测试研究.py::独立于测试研究.py::独立于测试研究.py===================================0.0 0 0 0 0 0 0 0 0 0 0 0.08秒一个或多个研究,我们可以使用与工作室名称匹配的正则表达式来运行一个或多个研究。
====================================================================================
=>Linux2平台——Python 2.7.13,Pytest-3.2.2.2,Py-1.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.4.4.4.4.34,Pluggy-0.4.4.4.0
插件:Study-0 1.2.0、testmon-0.9.6、race-0.1.1、pep8-1.0.6、cov-2.5.1,彩色点-0.1,依赖性-0.2
收集了7项
+0[]测试/测试研究。py:独立测试
+1[ai]测试/测试研究。py:测试收集信息
+2[ai]测试/测试研究。py:测试foo
+3[测试/测试研究。py:测试研究一项
-4[默认]测试/测试研究。py:测试研究一项
-5[默认]测试/测试研究。py:测试研究一项
-6[默认]测试/测试研究。py:测试研究两项
>
=========================================================================================================最慢的10次试验持续时间=========br/>0.20s呼叫测试/测试研究。py::测试研究1
0.10s呼叫测试/测试研究。py::测试foo
0.10s呼叫测试/测试研究。py::测试收集信息
0.05s呼叫测试/测试研究。py::测试独立
0.00s设置测试/测试研究。py::独立于测试研究
0.00s设置测试/测试研究。py::独立于测试研究
0.00s设置测试/测试研究。py::独立于测试研究
0.00s设置测试/测试研究。py::测试研究
0.00s拆卸测试/测试研究。py::测试研究
0.00s拆卸测试测试/测试研究。py::独立于测试的测试
==4个0.48秒通过了0.48秒=4个0.48秒通过了0.48秒====4个0.48秒中的4个0.48秒====================================
;安装
==``
=========>br/>=>$pip安装py测试研究
/>```
或自行下载并改进代码:)安装在主目录中的开发模式
```
python setup.py develop--user
```
\python版本