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

时间:2017-08-12 22:59:16

标签: python unit-testing

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

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

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

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

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

这是一个好方法吗?

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

2 个答案:

答案 0 :(得分:1)

这称为blackbox testing,因为测试人员不知道程序的内部结构。如果您坚持在不知道内部发生的情况下测试模块,您可以(如您所述)使用execsubprocess来检查输出的有效性。但更合乎逻辑的方法是使用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.