gpt4 book ai didi

Python Hypothesis - 一次为许多测试构建策略?

转载 作者:太空宇宙 更新时间:2023-11-04 00:36:40 25 4
gpt4 key购买 nike

我有一个复合的、构建起来昂贵但测试起来便宜的策略。我必须这样做:

@given(expensive_strategy())
def test_all(x):
assert...
assert...
...

构建示例大约需要 4 秒,运行断言的时间可以忽略不计。

最佳实践要求将这些测试分开。

我不清楚如何结合假设策略和例如。 TestCase.setUp 或 pytest session 范围的固定装置。既装饰夹具又调用 x = expensive_strategy(); @given(x) 没有帮助。

最佳答案

一个选择是使用单独策略生成示例,并忽略测试用例收缩、示例数据库等。这将使通过的测试套件更快,而失败的测试套件更加困惑.像下面这样的东西应该可以工作:

class MyTest(TestCase):
@classmethod # or however this is done in your test runner
def setUpClass(cls):
strategy = expensive_strategy()
cls.examples = [strategy.example() for _ in range(1000)]

def test_all(self):
for x in self.examples:
assert invariant(x)

另一种选择是破坏假设的内部结构,以便每个测试用例接收相同的字节流,并对构建策略时速度较慢的任何内容进行缓存,尽管这肯定会违反“最佳实践”。

就我个人而言,当“最佳实践”导致诸如缓慢的测试套件之类的荒谬结果时,我不会遵循“最佳实践”,而是在单个测试方法中进行所有断言,可能是通过调用辅助方法,例如 assert_a_particular_kind_of_assertion(x )

关于Python Hypothesis - 一次为许多测试构建策略?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43799038/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com