用例之间如何建立依赖关系?

2021-06-22 18:07发布

6条回答
flame
2楼 · 2021-06-23 14:23

 import pytest

    

    

   @pytest.mark.dependency()               # 被依赖的用例同样需要装饰

   def test_01():

       print(“用户注册”)

       assert 1 == 0

   

   

   @pytest.mark.dependency(depends=[“test_01”])        # depends 列表中接收需要依赖的用例名称,如果依赖多个,则直接将用例名称写入到列表即可

   def test_02():

       print(“用户登录”)

   

   if __name__ == ‘__main__’:

       pytest.main([“test_demo.py”])

  =========================== short test summary info ===========================

  FAILED test_demo.py::test_01 – assert 1 == 0

  ================== 1 failed, 1 skipped in 0.23s ===================

  执行结果为一个失败,一个跳过;

  第二种用法通过给用例设立别名尽心依赖;

   import pytest

    

   

   @pytest.mark.dependency(name=’test’)               # name 设置别名

   def test_01():

       print(“用户注册”)

       assert 1 == 0

   

    

   @pytest.mark.dependency(depends=[“test”])        # depends 填写依赖的别名

   def test_02():

       print(“用户登录”)

   

   

   if __name__ == ‘__main__’:

       pytest.main([“test_demo.py”])

  =========================== short test summary info ===========================

  FAILED test_demo.py::test_01 – assert 1 == 0

  ================== 1 failed, 1 skipped in 0.23s ===============================

  执行结果与上面一样

  第三种用法,通过pytest对方法的完全限定名进行依赖,怎么知道完全限定名是什么?

  test_demo.py::test_01 FAILED                                             [ 50%]      # 加粗部分就是pytest对用例的完全限定名

  test_demo.py::test_02 SKIPPED (test_02 depends on test)                  [100%]

  import pytest

  def test_01():

      print(“用户注册”)

      assert 1 == 0

  @pytest.mark.dependency(depends=[“test_demo.py::test_01”]) 

  def test_02():

      print(“用户登录”)

  if __name__ == ‘__main__’:

      pytest.main([“test_demo.py”])

  =========================== short test summary info ===========================

  FAILED test_demo.py::test_01 – assert 1 == 0

  ================== 1 failed, 1 skipped in 0.23s ===============================


 将两个或多个用例之间建立依赖关系,可以用pytest的第三方插件:pytest-dependency

依赖关系亦称"逻辑关系"。在项目管理中,指表示两个活动(前导活动和后续活动)中一个活动的变更将会影响到另一个活动的关系。通常活动之间的依赖关系包括强制依赖关系(所做工作中固有的依赖关系)、可自由处理的依赖关系(由项目队伍确定的依赖关系)和外部依赖关系(项目活动与非项目活动之间的依赖关系)三种形式。

例如:一个类使用另一个类的对象作为操作的参数,一个类用另一个类的对象作为它的数据成员,一个类向另一个类发消息等,这样的两个类之间都存在依赖关系。

在UML的类图中,用带箭头的虚线连接有依赖关系的两个类,箭头指向独立的类。在虚线上可以带一个版类标签,具体说明依赖的种类。


嘿呦嘿呦拔萝卜
5楼 · 2021-08-26 14:51

三层架构分别为表现层、业务逻辑层、数据访问层。

三层架构各层之间的依赖关系是:

1、表现层依赖业务逻辑层以实现业务数据处理。

2、业务逻辑层依赖数据访问层来读取数据库中的数据或将处理结果存入数据库中。

3、而数据访问层与表现层的依赖刚好相反。

其实使用三层架构开发的重点在业务逻辑层的实现。


帅帅马
6楼 · 2021-08-31 10:14

在实际使用pytest编写测试用例脚本时,会需要用到两个或多个测试在实际使用pytest编写测试用例脚本时,会需要用到两个或多个测试用例依赖运行,就比如登录的时候我们需要先注册,那登录的用例就需要依赖注册的用例。我们想要登录条件很简单可直接通过pytest.mark.skip装饰器完成。但是想要判断注册用例是否通过,根据是否通过执行登录的用例就要将两个用例之间建立依赖关系。

将两个或多个用例之间建立依赖关系,我们需要用到一个pytest的第三方插件:pytest-dependency

实际使用

import pytest   def test_01():   print("用户注册")   assert 1 == 0   def test_02():   print("用户登录")   if __name__ == '__main__':   pytest.main(["test_demo.py"])

这样肯定会在执行完第一个用例后报错,那如果第二个用例需要依赖注册,那肯定登录的用例以及后面的用例全部执行失败;

添加依赖关系

import pytest   @pytest.mark.dependency() # 被依赖的用例同样需要装饰   def test_01():   print("用户注册")   assert 1 == 0   @pytest.mark.dependency(depends=["test_01"]) # depends 列表中接收需要依赖的用例名称,如果依赖多个,则直接将用例名称写入到列表即可   def test_02():   print("用户登录")   if __name__ == '__main__':   pytest.main(["test_demo.py"])

=========================== short test summary info ===========================  FAILED test_demo.py::test_01 - assert 1 == 0  ================== 1 failed, 1 skipped in 0.23s ===================  执行结果为一个失败,一个跳过;

第二种用法通过给用例设立别名尽心依赖;

import pytest   @pytest.mark.dependency(name='test') # name 设置别名   def test_01():   print("用户注册")   assert 1 == 0   @pytest.mark.dependency(depends=["test"]) # depends 填写依赖的别名   def test_02():   print("用户登录")   if __name__ == '__main__':   pytest.main(["test_demo.py"])

=========================== short test summary info ===========================  FAILED test_demo.py::test_01 - assert 1 == 0  ================== 1 failed, 1 skipped in 0.23s ===============================

执行结果与上面一样

第三种用法,通过pytest对方法的完全限定名进行依赖,怎么知道完全限定名是什么?

test_demo.py::test_01 FAILED [ 50%]      # 加粗部分就是pytest对用例的完全限定名  test_demo.py::test_02 SKIPPED (test_02 depends on test) [100%]

import pytest  def test_01():   print("用户注册")   assert 1 == 0  @pytest.mark.dependency(depends=["test_demo.py::test_01"])  def test_02():   print("用户登录")  if __name__ == '__main__':   pytest.main(["test_demo.py"])

=========================== short test summary info ===========================  FAILED test_demo.py::test_01 - assert 1 == 0  ================== 1 failed, 1 skipped in 0.23s ===============================

插件依赖的应用很灵活,一个用例可以依赖其他用例也可以被其他用例依赖。很多使用的方法可以在操作中进行尝试。运行,就比如登录的时候我们需要先注册,那登录的用例就需要依赖注册的用例。我们想要登录条件很简单可直接通过pytest.mark.skip装饰器完成。但是想要判断注册用例是否通过,根据是否通过执行登录的用例就要将两个用例之间建立依赖关系。

将两个或多个用例之间建立依赖关系,我们需要用到一个pytest的第三方插件:pytest-dependency

官网:https://pytest-dependency.readth ... ge.html#basic-usage

# 下载插件  pip install pytest-dependency

实际使用

import pytest   def test_01():   print("用户注册")   assert 1 == 0   def test_02():   print("用户登录")   if __name__ == '__main__':   pytest.main(["test_demo.py"])

这样肯定会在执行完第一个用例后报错,那如果第二个用例需要依赖注册,那肯定登录的用例以及后面的用例全部执行失败;

添加依赖关系

import pytest   @pytest.mark.dependency() # 被依赖的用例同样需要装饰   def test_01():   print("用户注册")   assert 1 == 0   @pytest.mark.dependency(depends=["test_01"]) # depends 列表中接收需要依赖的用例名称,如果依赖多个,则直接将用例名称写入到列表即可   def test_02():   print("用户登录")   if __name__ == '__main__':   pytest.main(["test_demo.py"])

=========================== short test summary info ===========================  FAILED test_demo.py::test_01 - assert 1 == 0  ================== 1 failed, 1 skipped in 0.23s ===================  执行结果为一个失败,一个跳过;

第二种用法通过给用例设立别名尽心依赖;

import pytest   @pytest.mark.dependency(name='test') # name 设置别名   def test_01():   print("用户注册")   assert 1 == 0   @pytest.mark.dependency(depends=["test"]) # depends 填写依赖的别名   def test_02():   print("用户登录")   if __name__ == '__main__':   pytest.main(["test_demo.py"])

=========================== short test summary info ===========================  FAILED test_demo.py::test_01 - assert 1 == 0  ================== 1 failed, 1 skipped in 0.23s ===============================

执行结果与上面一样

第三种用法,通过pytest对方法的完全限定名进行依赖,怎么知道完全限定名是什么?

test_demo.py::test_01 FAILED [ 50%]      # 加粗部分就是pytest对用例的完全限定名  test_demo.py::test_02 SKIPPED (test_02 depends on test) [100%]

import pytest  def test_01():   print("用户注册")   assert 1 == 0  @pytest.mark.dependency(depends=["test_demo.py::test_01"])  def test_02():   print("用户登录")  if __name__ == '__main__':   pytest.main(["test_demo.py"])

=========================== short test summary info ===========================  FAILED test_demo.py::test_01 - assert 1 == 0  ================== 1 failed, 1 skipped in 0.23s ===============================

插件依赖的应用很灵活,一个用例可以依赖其他用例也可以被其他用例依赖。很多使用的方法可以在操作中进行尝试。


体育组自行车
7楼 · 2021-09-15 08:49

用 @pytest.mark.dependency()对所依赖的用例进行标记,使用@pytest.mark.dependency(depends=["测试用例名称"]) 引用依赖,测试用例名称可以是多个

用例多存在多个依赖时,只要存在一个依赖失败,被依赖用例就跳过,所有依赖成功才执行



相关问题推荐

  • 回答 157

    虽然从事开发行业的女生越来越多,但女生的比例还是远比不上男生。软件测试的男女生比例则基本相当,软件测试要求细心、耐心,大部分女生也是比较适合学的。而且软件测试课程分为手工测试和自动化测试,手工测试分为功能测试、性能测试、接口测试。自动化测试...

  • 回答 121

    需要。很多人当初抱着测试不需要懂代码,才选择了这个行业,这个就要看对自己的职业定位了,是止步于月薪过万就可以了,还是往20k、30k去突破,如果这样的话,是肯定要会接口、会自动化,就必然要涉及到代码。如果真的看不懂代码,实际的测试后期的工作会出现...

  • 回答 91

    在我看来游戏开发挺难的,尤其像手游一类的还有网游,里面有很多的程序代码而且伤神又费力,不过也有女生在这方面做的很好的,如果你感兴趣,非常想学,可以试试

  • 回答 80

    软件测试专业现在很火热,很缺少人才,25岁学软件测试能学会,就业薪资也高,工作也相对轻松

  • 回答 11
    已采纳

    测试类型有:功能测试,性能测试,界面测试。功能测试在测试工作中占的比例最大,功能测试也叫黑盒测试。是把测试对象看作一个黑盒子。利用黑盒测试法进行动态测试时,需要测试软件产品的功能,不需测试软件产品的内部结构和处理过程。采用黑盒技术设计测试用...

  • 回答 15
    已采纳

    这个其实和接口测试的场景密不可分的,比如说:外部接口测试:    必须先接口测试通过了,才能执行功能测试子系统或者各个模块之间的联调测试:    必须各子系统后台代码完成,并提供接口才可以完成测试,一般来说都要求各子系统功能测试通过后再进行...

  • 回答 6
    已采纳

    这个是会因为公司的架构不同而不同的,并不是固定的,但是一般是会有专门的测试部门,或者叫质量保证部,也有可能是叫别的名字。

  • 回答 43
    已采纳

    移动端测试,包括App兼容性测dao试,7*24小时稳定性测试,功耗性能测试,UI测试,交互测试等,课程主要学习的内容有:1、功能测试主要包括计算机基础、软件测试核心理论、Linux、数据库,学习目标是掌握软件测试核心理论,结合Linux、数据库等可实现移动端、w...

  • 回答 1

    标题  1. 首先要做一个标题党(此标题党非彼标题党)。标题一定要清晰简洁易理解,不应该臃长  2. 尽量前缀要规范,例如模板: [Product][Version]_[Feature]_[Title],这样描述会很清晰,也方便查找  3. 缺陷的标题一定要描述在什么情况下发生了什么问...

  • 回答 1

    1、 缺陷报告可以记录缺陷2、可以对缺陷进行跟踪管理3、可以对缺陷报告进行分类 总结 统计

  • 回答 1

    1、缺陷编号(Defect ID),提交BUG的顺序。2、缺陷标题(summary),简明扼要的说明一下这个BUG。3、缺陷的发现者(DetectedBy) ,一般是自己。4、发现缺陷的日期(Detected on date),一般是当天。5、缺陷所属的模块(subject), 在测试哪个模块的时候发现的BUG...

  • 回答 1

    缺陷标题好的缺陷标题需要让相关人员一目了然,一般建议的格式是条件+失败。缺陷类型缺陷类型也是根据具体的项目而定的。但一般情况下分为功能、界面、建议。重现步骤重现步骤的编写规则可以参考测试用例中的操作步骤 ,一定要足够详细、说明清楚问题的操作顺...

  • 回答 1

    工具:NoSQLUnitJsTestDriverQTRunnerVenusFluintBuster.JSSQLUnitECUTQTestlibUnitilsgreatestDbUnitAbbotGoogleTest框架:JUnitMoqJSCaptureMockCUnitPyUnitCppUTestCppUnitzCUTcipra

  • 回答 1

    JunitTestNGGoogleTestpytestunittestJmockitJaCoCogcov、lcov、gcovrCoverage.pyEvoSuiteDiffblue Cover

  • 回答 1

      React Hooks测试库( Testing Library)是一个简单而完整的React Hooks测试工具。  React Hooks测试库让用户可以为React钩子创建简单的测试工具,自定义钩子的输入和检索输出,以处理在功能组件体内运行的情况。  使用React Hooks,用户不必为了测试而去担...

  • 回答 1

    1、单元测试注重代码逻辑,接口测试注重业务逻辑;2、单元测试的粒度最小,是测试最小独立的单元模块(不依赖其他模块);接口测试不是,会覆盖很多;3、单元测试是白盒测试,接口测试是黑盒测试;4、单元测试关注的是代码的实现和逻辑,测试范围较小,保证实...

没有解决我的问题,去提问