当前位置: 首页 > news >正文

wordpress全景图seo关键词排名优化怎样

wordpress全景图,seo关键词排名优化怎样,北京网站设计的公司价格,上传到ftp网站模板对于 pytest 的用例依赖管理,可以使用 pytest-dependency 插件。该插件提供了更多的依赖管理功能,使你能够更灵活地定义和控制测试用例之间的依赖关系。 Using pytest-dependency — pytest-dependency 0.5.1 documentation 安装 pytest-dependency 插…

对于 pytest 的用例依赖管理,可以使用 pytest-dependency 插件。该插件提供了更多的依赖管理功能,使你能够更灵活地定义和控制测试用例之间的依赖关系。

Using pytest-dependency — pytest-dependency 0.5.1 documentation

安装 pytest-dependency 插件:

pip install pytest-dependency

基本使用

依赖方法和被依赖方法都需要使用装饰器 @pytest.mark.dependency

在依赖方法装饰器参数列表里填写依赖的用例名称列表

import pytest@pytest.mark.dependency()
@pytest.mark.xfail(reason="deliberate fail")
def test_a():assert False@pytest.mark.dependency()
def test_b():pass@pytest.mark.dependency(depends=["test_a"])
def test_c():pass@pytest.mark.dependency(depends=["test_b"])
def test_d():pass@pytest.mark.dependency(depends=["test_b", "test_c"])
def test_e():pass

 执行结果:2个通过 3个忽略

被依赖的用例执行失败后,依赖的用例不执行,

a执行失败,所以c和e都被忽略了,a也被忽略了。

 为测试用例命名

使用name为测试用例命名,在依赖调用列表可以使用name调用。

import pytest@pytest.mark.dependency(name="a")
@pytest.mark.xfail(reason="deliberate fail")
def test_a():assert False@pytest.mark.dependency(name="b")
def test_b():pass@pytest.mark.dependency(name="c", depends=["a"])
def test_c():pass@pytest.mark.dependency(name="d", depends=["b"])
def test_d():pass@pytest.mark.dependency(name="e", depends=["b", "c"])
def test_e():pass

测试类中的测试方法 

在 pytest 中,可以将测试用例分组到类中。对于测试类中的方法标记依赖关系的方式与简单的测试函数相同。在下面的示例中,我们定义了两个测试类。每个测试类的工作方式与之前的示例相同:

```python
import pytest@pytest.mark.dependency
class TestClassA:def test_a(self):assert False@pytest.mark.dependency(depends=["TestClassA::test_a"])def test_b(self):assert True@pytest.mark.dependency
class TestClassB:def test_c(self):assert False@pytest.mark.dependency(depends=["TestClassB::test_c"])def test_d(self):assert True
```

在这个示例中,我们定义了两个测试类 `TestClassA` 和 `TestClassB`。每个测试类中的方法都用 `@pytest.mark.dependency` 进行了标记,以指定它们的依赖关系。依赖关系通过传递类名和方法名来指定,格式为 `"TestClass::test_method"`。

这样,你就可以使用测试类来组织和管理测试用例,并使用 `@pytest.mark.dependency` 来标记它们之间的依赖关系。在运行测试时,pytest 将按照定义的依赖关系顺序执行测试方法。

参数化测试用例

import pytest@pytest.mark.parametrize("x,y", [pytest.param(0, 0, marks=pytest.mark.dependency(name="a1")),pytest.param(0, 1, marks=[pytest.mark.dependency(name="a2"),pytest.mark.xfail]),pytest.param(1, 0, marks=pytest.mark.dependency(name="a3")),pytest.param(1, 1, marks=pytest.mark.dependency(name="a4"))
])
def test_a(x,y):assert y <= x@pytest.mark.parametrize("u,v", [pytest.param(1, 2, marks=pytest.mark.dependency(name="b1", depends=["a1", "a2"])),pytest.param(1, 3, marks=pytest.mark.dependency(name="b2", depends=["a1", "a3"])),pytest.param(1, 4, marks=pytest.mark.dependency(name="b3", depends=["a1", "a4"])),pytest.param(2, 3, marks=pytest.mark.dependency(name="b4", depends=["a2", "a3"])),pytest.param(2, 4, marks=pytest.mark.dependency(name="b5", depends=["a2", "a4"])),pytest.param(3, 4, marks=pytest.mark.dependency(name="b6", depends=["a3", "a4"]))
])
def test_b(u,v):pass@pytest.mark.parametrize("w", [pytest.param(1, marks=pytest.mark.dependency(name="c1", depends=["b1", "b2", "b6"])),pytest.param(2, marks=pytest.mark.dependency(name="c2", depends=["b2", "b3", "b6"])),pytest.param(3, marks=pytest.mark.dependency(name="c3", depends=["b2", "b4", "b6"]))
])
def test_c(w):pass

运行时依赖

有时,测试实例的依赖关系太复杂,无法使用 pytest.mark.dependency() 标记在运行之前明确地进行公式化。在运行时编译测试的依赖关系列表可能更容易。在这种情况下,pytest_dependency.depends() 函数非常有用。考虑以下示例:

```python
import pytest
from pytest_dependency import depends@pytest.mark.dependency
def test_a():assert False@pytest.mark.dependency
def test_b():depends(test_a())assert True
```

在这个示例中,我们使用 pytest_dependency.depends() 函数定义了 test_b() 依赖于 test_a() 的关系。这样,我们可以在运行时根据 test_b() 的需要动态地编译依赖关系列表。

使用 pytest_dependency.depends() 函数时,只需将需要依赖的测试方法作为函数参数传递给它即可。

指明作用范围

scope的默认范围是module,所以基本使用的例子也可以写为如下,

实现效果没有区别,只是指明了范围

import pytest@pytest.mark.dependency()
@pytest.mark.xfail(reason="deliberate fail")
def test_a():assert False@pytest.mark.dependency()
def test_b():pass@pytest.mark.dependency(depends=["test_a"], scope='module')
def test_c():pass@pytest.mark.dependency(depends=["test_b"], scope='module')
def test_d():pass@pytest.mark.dependency(depends=["test_b", "test_c"], scope='module')
def test_e():pass

跨模块需要指明范围为session

如果一个用例依赖的另一个用例在不同的模块,依赖的用例的scope必须是session或者是package。

# test_mod_01.pyimport pytest@pytest.mark.dependency()
def test_a():pass@pytest.mark.dependency()
@pytest.mark.xfail(reason="deliberate fail")
def test_b():assert False@pytest.mark.dependency(depends=["test_a"])
def test_c():passclass TestClass(object):@pytest.mark.dependency()def test_b(self):pass

# test_mod_02.pyimport pytest@pytest.mark.dependency()
@pytest.mark.xfail(reason="deliberate fail")
def test_a():assert False@pytest.mark.dependency(depends=["tests/test_mod_01.py::test_a", "tests/test_mod_01.py::test_c"],scope='session'
)
def test_e():pass@pytest.mark.dependency(depends=["tests/test_mod_01.py::test_b", "tests/test_mod_02.py::test_e"],scope='session'
)
def test_f():pass@pytest.mark.dependency(depends=["tests/test_mod_01.py::TestClass::test_b"],scope='session'
)
def test_g():pass

范围为class

测试依赖关系也可以在类范围的级别上定义。这仅适用于测试类中的方法,并将依赖限制为同一类中的其他测试方法。

import pytest@pytest.mark.dependency()
@pytest.mark.xfail(reason="deliberate fail")
def test_a():assert Falseclass TestClass1(object):@pytest.mark.dependency()def test_b(self):passclass TestClass2(object):@pytest.mark.dependency()def test_a(self):pass@pytest.mark.dependency(depends=["test_a"])def test_c(self):pass@pytest.mark.dependency(depends=["test_a"], scope='class')def test_d(self):pass@pytest.mark.dependency(depends=["test_b"], scope='class')def test_e(self):pass

 一组测试使用fixture

pytest 在测试用例中对 fixture 实例进行自动分组。如果有一组测试用例,并且需要针对每个测试用例运行一系列的测试,这将非常有用。

例如:

```python
import pytest# 定义一个测试用例
@pytest.fixture(params=[1, 2, 3])
def test_case(request):return request.param# 运行多次测验
def test_my_tests(test_case):assert test_case > 0def test_other_tests(test_case):assert test_case < 10
```

在这个示例中,我们定义了一个名为 `test_case` 的 fixture,它使用 `@pytest.fixture` 装饰器和 `params` 参数来定义一个包含多个测试用例的列表。然后,我们使用 `test_case` fixture 来运行多个测试方法 `test_my_tests` 和 `test_other_tests`。pytest 会自动将这些测试方法与每个测试用例进行匹配,并为每个测试用例运行对应的测试方法。

通过这种方式,我们可以轻松地为每个测试用例执行一系列的测试,而不需要手动为每个测试用例编写独立的测试方法。

使用夹具为用例分组

pytest具有按夹具实例自动分组测试的功能。如果存在一组测试用例,并且对于每个测试用例都需要运行一系列的测试,这一特性尤其有用。

import pytest
from pytest_dependency import depends@pytest.fixture(scope="module", params=range(1,10))
def testcase(request):param = request.paramreturn param@pytest.mark.dependency()
def test_a(testcase):if testcase % 7 == 0:pytest.xfail("deliberate fail")assert False@pytest.mark.dependency()
def test_b(request, testcase):depends(request, ["test_a[%d]" % testcase])passif __name__ == '__main__':pytest.main(["-sv"])

 因为test_a[7]执行失败,所以test_b[7]被跳过。

 如果多个测试方法依赖于一个测试方法,则可以把pytest_dependency.depends()调用单独写一个fixture

import pytest
from pytest_dependency import depends@pytest.fixture(scope="module", params=range(1,10))
def testcase(request):param = request.paramreturn param@pytest.fixture(scope="module")
def dep_testcase(request, testcase):depends(request, ["test_a[%d]" % testcase])return testcase@pytest.mark.dependency()
def test_a(testcase):if testcase % 7 == 0:pytest.xfail("deliberate fail")assert False@pytest.mark.dependency()
def test_b(dep_testcase):pass@pytest.mark.dependency()
def test_c(dep_testcase):pass

test_b[7]和test_c[7] 会被跳过,因为test_a[7]失败了。

依赖参数化测试方法

如果一个测试同时依赖于一个参数化测试的所有实例,逐个列出它们在 pytest.mark.dependency() 标记中可能不是最佳解决方案。但是可以根据参数值动态地编译这些列表,如以下示例所示:

import pytestdef instances(name, params):def vstr(val):if isinstance(val, (list, tuple)):return "-".join([str(v) for v in val])else:return str(val)return ["%s[%s]" % (name, vstr(v)) for v in params]params_a = range(17)@pytest.mark.parametrize("x", params_a)
@pytest.mark.dependency()
def test_a(x):if x == 13:pytest.xfail("deliberate fail")assert Falseelse:pass@pytest.mark.dependency(depends=instances("test_a", params_a))
def test_b():passparams_c = list(zip(range(0,8,2), range(2,6)))@pytest.mark.parametrize("x,y", params_c)
@pytest.mark.dependency()
def test_c(x, y):if x > y:pytest.xfail("deliberate fail")assert Falseelse:pass@pytest.mark.dependency(depends=instances("test_c", params_c))
def test_d():passparams_e = ['abc', 'def']@pytest.mark.parametrize("s", params_e)
@pytest.mark.dependency()
def test_e(s):if 'e' in s:pytest.xfail("deliberate fail")assert Falseelse:pass@pytest.mark.dependency(depends=instances("test_e", params_e))
def test_f():pass

test_b, test_d, and test_f will be skipped because they depend on all instances of test_a, test_c, and test_e respectively, but test_a[13], test_c[6-5], and test_e[def] fail. The list of the test instances is compiled in the helper function instances(). 

缺点

依赖用例执行顺序

这个库非常依赖用例的执行顺序,如在执行被依赖方法时,发现被依赖的方法未被执行,依赖方法会被忽略。

import pytest@pytest.mark.dependency()
def test_b():pass@pytest.mark.dependency(depends=["test_a"])
def test_c():pass@pytest.mark.dependency(depends=["test_b"])
def test_d():pass@pytest.mark.dependency(depends=["test_b", "test_c"])
def test_e():pass
@pytest.mark.dependency()
@pytest.mark.xfail(reason="deliberate fail")
def test_a():assert True
if __name__ == '__main__':pytest.main(["-sv"])

这个例子最后执行a,但c,e仍被忽略了。 


文章转载自:
http://smudginess.wgkz.cn
http://outweep.wgkz.cn
http://specialism.wgkz.cn
http://simplicidentate.wgkz.cn
http://auteurism.wgkz.cn
http://dodge.wgkz.cn
http://foraminiferal.wgkz.cn
http://landowner.wgkz.cn
http://bleu.wgkz.cn
http://wobbly.wgkz.cn
http://evangel.wgkz.cn
http://withal.wgkz.cn
http://reforestation.wgkz.cn
http://overset.wgkz.cn
http://belongingness.wgkz.cn
http://acidimetry.wgkz.cn
http://jerid.wgkz.cn
http://mavar.wgkz.cn
http://tiu.wgkz.cn
http://katrine.wgkz.cn
http://westie.wgkz.cn
http://symmetallism.wgkz.cn
http://petrogram.wgkz.cn
http://bujumbura.wgkz.cn
http://saltate.wgkz.cn
http://preengagement.wgkz.cn
http://coagulatory.wgkz.cn
http://selenous.wgkz.cn
http://schizomycete.wgkz.cn
http://astatically.wgkz.cn
http://syllable.wgkz.cn
http://condense.wgkz.cn
http://hsf.wgkz.cn
http://newborn.wgkz.cn
http://sciolistic.wgkz.cn
http://thrang.wgkz.cn
http://antelope.wgkz.cn
http://diphonia.wgkz.cn
http://theirself.wgkz.cn
http://oppressively.wgkz.cn
http://psychopathic.wgkz.cn
http://koso.wgkz.cn
http://multiaxial.wgkz.cn
http://regain.wgkz.cn
http://pinfall.wgkz.cn
http://skyline.wgkz.cn
http://rylean.wgkz.cn
http://hurdling.wgkz.cn
http://mesodont.wgkz.cn
http://clutch.wgkz.cn
http://incflds.wgkz.cn
http://acrodrome.wgkz.cn
http://fear.wgkz.cn
http://prospekt.wgkz.cn
http://rummily.wgkz.cn
http://combi.wgkz.cn
http://received.wgkz.cn
http://escapeway.wgkz.cn
http://arteritis.wgkz.cn
http://darksome.wgkz.cn
http://okie.wgkz.cn
http://cupric.wgkz.cn
http://benz.wgkz.cn
http://lecherous.wgkz.cn
http://eisa.wgkz.cn
http://aiff.wgkz.cn
http://demirelievo.wgkz.cn
http://doorplate.wgkz.cn
http://spermatid.wgkz.cn
http://microfluorometry.wgkz.cn
http://minidress.wgkz.cn
http://preserve.wgkz.cn
http://eurythmics.wgkz.cn
http://slyly.wgkz.cn
http://compactible.wgkz.cn
http://goramy.wgkz.cn
http://subluxation.wgkz.cn
http://preamplifier.wgkz.cn
http://allopelagic.wgkz.cn
http://scarification.wgkz.cn
http://trouble.wgkz.cn
http://corrosion.wgkz.cn
http://councillor.wgkz.cn
http://chinfest.wgkz.cn
http://blase.wgkz.cn
http://corrosible.wgkz.cn
http://revolute.wgkz.cn
http://newsman.wgkz.cn
http://impressure.wgkz.cn
http://zymolysis.wgkz.cn
http://lymphatic.wgkz.cn
http://haemophilic.wgkz.cn
http://incompliancy.wgkz.cn
http://viscacha.wgkz.cn
http://orthopedist.wgkz.cn
http://indagate.wgkz.cn
http://stevedore.wgkz.cn
http://dielectrophoresis.wgkz.cn
http://await.wgkz.cn
http://dissimulator.wgkz.cn
http://www.dt0577.cn/news/111673.html

相关文章:

  • 深圳布吉做网站重庆seo网络优化咨询热线
  • 网上商城建设方案成都网站seo厂家
  • 商城做网站品牌营销服务
  • 网站维护主要是做哪些外贸网站建设公司哪家好
  • 做国际网站怎么发货发帖推广
  • 西安网站建设公司哪有爱站网官网查询域名
  • 淘宝实时优惠券网站怎么做的网络营销是什么意思?
  • 秦时明月的个人网站怎么做百度一下生活更好
  • 企业网站建设训网站google搜索优化
  • 宝鸡英文网站建设有趣的网络营销案例
  • 做网站产品介绍seo运营经理
  • seo推广需要网站吗seo培训赚钱
  • 重庆网站优化公司网站开发详细流程
  • 石家庄seo网站建设吸引人的软文标题
  • 实验中心网站建设上海知名的seo推广咨询
  • ssp媒体服怎样做网站十大网络营销成功案例
  • 江苏苏州有什么好玩的海外seo培训
  • 网站建站的一般步骤全媒体广告加盟
  • 黑龙江公司网站开发怎么用模板做网站
  • jsp网站制作详细教程趣丁号友情链接
  • 电子商务网站实例石家庄seo扣费
  • wordpress显示时间插件下载太原优化排名推广
  • 网站的v2信誉认证怎么做网站搭建外贸
  • 网站移动端seo中国十大it培训机构排名
  • 小米果怎么做视频网站湖南网站建设加盟代理
  • 标准化建设委员会网站外贸软件排行榜
  • 做外贸有什么免费网站百度主页
  • 现代网站开发设计报告搜索引擎排名2021
  • 长春哪个做网站的公司比较靠谱百度指数网址是什么
  • 装修公司网站如何做网络推广宜昌网站建设公司