-1

我正在使用 Python Hypothesis 为数据库编写随机测试。在将给定值插入表的 1-2 次循环后,我得到列表索引超出范围并@seed 重现。没有什么会失败,我还没有断言任何事情。我该如何调试呢?

谢谢

        run_statement("create table t (x int)")
        @given(st.integers(1,10), st.integers(1,10))
        def insert_select(x):
            assume(x)
            run_statement("insert into t values ({})".format(x))
            select_results = run_statement_with_results("select * from t")
            print select_results

        insert_select()

结果:

You can add @seed(257907719204305935240373390472712621009) to this test to reproduce this failure.
timeout
error: list index out of range
4

1 回答 1

0

不幸的是,这个测试从根本上被打破了:

  • 您在测试用例的执行之间共享数据库状态,这一定不能发生,否则您的测试将无法重现。
  • 您为 提供了两个参数@given,但测试函数只接受一个。
  • 电话是没有意义的assume(x),因为x永远不会是假的

一旦解决了这些问题,问题很可能就会消失。

于 2019-05-08T14:03:55.240 回答