如何在python单元测试中测试python二进制文件?



我想在单元测试中使用命令行参数测试python二进制"main.py"。此二进制文件的用法如下。

main.py --input_file=input.txt --output_file=out.txt

在设计单元测试时,我认为最好像测试类或方法一样测试每个组件。

但是,在某些情况下,例如上述情况,我想对整个python二进制文件进行端到端测试,尤其是当它已经由其他人创建时。在上面的情况下,我想确定"main.py"是否正确生成"out.txt"。

一种选择是使用 subprocess.check_call 并将其创建到临时目录,然后加载它并将其与黄金(预期输出(进行比较。

这是一个好方法吗?

或者,如果有更好的方法,你能告诉我吗?

这称为黑盒测试,因为测试人员不知道程序的内部结构。如果你坚持测试模块而不了解里面发生了什么,你可以(如你提到的(使用execsubprocess来检查输出的有效性。但更合乎逻辑的方法是使用unittest库并尝试使用它提供的 API 测试代码。

如果要在单元测试中测试参数的处理,只需查看 main.py 内部,看看它如何处理参数。

例如,您可能有一个测试用例,该用例设置sys.argv然后调用 main:

import sys
import myapp.main
sys.argv = '''main.py --input_file=input.txt --output_file=out.txt'''.split()
myapp.main.main()
# I have no idea what test you want to run.

最新更新