gpt4 book ai didi

database - 如何组织实时数据完整性测试和代码单元测试?

转载 作者:太空狗 更新时间:2023-10-30 01:51:03 25 4
gpt4 key购买 nike

我有几个包含代码测试代码的文件(使用“unittest”类)。

后来我发现也可以测试数据库的完整性。我把它放到一个单独的目录树中。 (诸如键的格式正确、父节点和子节点指向正确等。编辑:这是一个 nosql 项目,我不能依赖数据库级别的检查,例如参照完整性等。)

我使用相同的单元测试类进行完整性测试。

现在我想知道将其分开是否真的有意义。为了测试数据的完整性,我经常复制用于测试处理数据的代码的部分代码。

但又不一样。代码测试使用测试数据库(每次测试后都会被删除),完整性测试连接到实时数据并对其进行分析。我想从 cron 调用完整性测试,并在实时数据库发生问题时发送警报。

你会如何处理?这种设置有标准吗?您的体验如何?

我倾向于将所有内容放在同一个文件中,这将导致代码测试也由生产环境中的 cron 执行。

编辑:同样驱使我的是尽量保持项目简单,不要让单个任务或工作流程涉及太多文件。没有所有的测试,我已经有一个类文件、一个子类、一个相关类、一些库(帮助程序)文件和主要代码。测试添加一个文件。它帮助我在编码时保持注意力集中,压力更小,我相信我犯的错误更少,而且我可以更快地记住并找到受影响的文件更少的特定代码部分。每个工作流程只有一个测试文件会有所帮助。如果我将它分开,则有 2 个文件(数据完整性测试和代码测试)和可能 3 个(两者的公共(public)库)。抽象会增加复杂性。

Edit2:我现在正在重构一点点,只将数据测试文件移动到代码测试所在的同一目录树中,但保留名称指示“完整性”或“完整性”的不同文件“测试”。我不会(还)合并文件,因为有 2 个人反对,我现在相信他们的经验和建议。我暂时忍受代码重复。

Edit3: 我忘了提到在这种情况下每次运行的测试选择不是由树结构决定的。测试在主文件中列举,所以我目前有 2 个主文件“完整性”和“代码测试”,并且测试可以存在于相同的目录结构中。

也许会有更多人回答。感谢您到目前为止提供的宝贵意见,这已经帮助我开发了最终结构!

Edit4:我现在做了更多的重构。看来我应该保留 2 个文件,但目的略有修改。一个针对生产服务器上的计划监控。另一个用于开发。但是在这两个文件中都可以进行完整性测试或代码测试。并且在这两个文件中都可以对测试数据库(测试后删除)和永久数据库(每个都有一个永久数据库、生产服务器和开发服务器)执行操作。还有一件重要的事情:我发现自己将大量通用代码从测试文件移到了类文件中。因此,这些类(class)也获得了仅用于测试的能力。到目前为止,我喜欢这个,感觉很干净。我(还)没有创建一个在 2 个测试前端之间共享的测试库,这段代码已经转到了现在正在测试的对象的类文件中。

请注意,我下面的评论是用“user89021”签名的,但这是我,karlthorwald。我对此无能为力。

最佳答案

您应该将数据库相关测试与“纯”单元测试分开。
考虑到好处,拥有两个不同程序集的成本非常低——你有一套快速、无需环境集的测试,你可以在任何机器上运行,还有一套较慢的套件,用于测试只能在特定位置运行的数据库完整性(例如构建服务器)。

另一个好处是您可以有两个运行不同测试套件的构建过程(快速和夜间)。

为避免重复代码,您可以使用两个测试套件都需要的通用方法/操作创建另一个程序集。不要太担心重复实际测试,因为您正在测试不同的东西(逻辑或数据库),所以您的测试迟早会变得完全不同,具体取决于您尝试测试的内容。

关于database - 如何组织实时数据完整性测试和代码单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2707558/

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