PyTest中的端到端测试

时间:2018-06-28 15:57:44

标签: pytest end-to-end

我使用PyTest编写我的单元测试,我绝对喜欢它。最近-对端到端/验收测试的需求已经出现,并且由于我在验收测试框架方面经验不足,因此我决定进行一些研究,以研究是否有可能在PyTest中编写端到端测试。

关于测试中的系统,我不会涉及太多细节,但是应用程序要做的是从客户那里接收3条消息(JSON格式),在其上撒一些业务层魔术,然后输出7条消息回传给客户。这是有关结构和测试设计的几个问题:

  1. setup部分应创建3条JSON消息,并将其发送到测试中的系统。我不确定fixtures是处理它的正确方法,但是对我来说,固定装置是一种返回带有状态的对象的方法。因此,我认为我的setup是同一件事,只是范围更大。假设我们有一个名为setup(模块作用域)的固定装置,它执行测试工作所需的多个操作(创建3个JSON消息并将其分派)。我的直觉告诉我每个测试文件/测试类不应有多个setup固定装置,但是,我不确定应该有多少个测试。我可以使其更像“单元”,并有7个测试。每个消息将消耗一条消息,并验证消息数据是否正确。或者-由于3条消息输出7条消息,并且设置和结果之间存在直接联系,因此我应该使用一个测试来验证其中的所有7条消息。这将使我的测试方法更加复杂,因为从返回的JSON断言单独的值可能是一个坏主意-如果第一个消息失败,我将无法知道剩下的6条消息是否正常(这当然是当您看到整个图片时,更容易知道出了什么问题)。因此,为了使单个测试正常工作,我将必须编写一种方法,将所有7条消息与预期结果进行比较,然后使用有关7条消息中的哪些失败以及为何原因的信息引发单个断言。因此,虽然在测试上下文中验证7条消息是正确的,但它更加复杂,并且不会遵循“测试一件简单的事情”。

  2. setup创建一个名为random_test_entity的实体(以及许多其他实体)。测试需要用于断言的信息。因此,设置夹具可以返回带有我稍后在测试中需要的所有那些值的字典,或者-我可以创建另一个夹具,它返回带有设置夹具和测试都将使用的值的字典。这里的问题是我需要在夹具和测试之间共享数据和状态。而且因为我没有聪明的方法,所以我的灯具返回的数据并没有严格地连接到感觉奇怪的设置上。一个返回值列表的夹具对我来说很奇怪,但也将设置夹具拆分为多个夹具,以便我可以共享数据。

  3. 我正在使用Ptest git存储库作为有关如何编写单元测试的圣经。我从中学到了很多关于测试设计的知识。有什么资料可以用来学习如何正确编写端到端测试?

谢谢大家!

0 个答案:

没有答案