我想在单元测试中使用命令行参数测试python二进制文件“main.py”。这个二进制文件的用法如下。
main.py --input_file=input.txt --output_file=out.txt
在设计单元测试时,我认为最好像对类或方法一样测试每个组件。
但是,在某些情况下,如上所述,我想对整个python二进制文件进行端到端测试,特别是当它已经由其他人创建时。在上面的例子中,我想确定“main.py”是否正确生成“out.txt”。
一个选项是使用subprocess.check_call并将其创建到临时目录,然后加载它并将其与黄金(预期输出)进行比较。
这是一个好方法吗?
或者,如果有更好的方法,请告诉我吗?
答案 0 :(得分:1)
这称为blackbox testing,因为测试人员不知道程序的内部结构。如果您坚持在不知道内部发生的情况下测试模块,您可以(如您所述)使用exec
或subprocess
来检查输出的有效性。但更合乎逻辑的方法是使用unittest
库并尝试使用它提供的API测试代码。
答案 1 :(得分:1)
如果您在单元测试中测试参数的处理,只需查看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.