【发布时间】:2018-01-01 16:05:54
【问题描述】:
1。总结
我不明白,我怎么能在另一个动作之后运行 Python 方法。
2。文件
我的.py 文件示例:
# First test
for filename in first_folder:
if "Sasha Great" in open(filename).read():
log.debug(filename + " Done")
else:
print("First test failure for " + filename)
3。预期算法
3.1。测试通过
如果所有测试都通过,打印到控制台:
Test for all files successful passed
3.2.测试失败
如果,例如,我对SashaExample.txt 的一项测试失败:
- 打印
First test failure for SashaExample.txt; - 继续第一次测试其他文件;
-
如果有更多错误为
First test failure for AnotherExample.txt,将错误打印到控制台并继续测试;
-
如果有更多错误为
-
exit(1)运行所有测试后。
如果我使用 Travis CI 或 AppVeyor,我需要 exit(1),我可以看到我的测试中有错误。
4。没有帮助
4.1。在 else 之后退出(1)
如果:
for filename in first_folder:
if "Sasha Great" in open(filename).read():
log.debug(filename + " Done")
else:
print("First test failure for " + filename)
exit(1)
程序在第一次错误后结束。但我需要查看所有错误。
4.2。又一次尝试
- 我在 Google 中找不到如何解决我的问题;
- 我阅读了有关 Python 函数、方法的信息,
atexit,但我不明白如何解决这个问题。
【问题讨论】:
-
那些是单元测试还是集成测试?对于前一个,一个测试应该是原子的,它应该测试一件事,例如“文件夹很好”->(对或错)。 stackoverflow.com/a/235032/4621324 如果一个文件失败,那么“文件夹坏了”,检查其他文件没有多大意义。如果您真的想检查所有文件,您可以“自动生成”这些方法测试并一个接一个地运行,或者只是创建一个方法(不是测试),首先打印有关所有文件的“失败”信息,然后运行测试,这将在第一个问题后失败。
-
@Axalix:感谢您的评论。我的
.py文件检查了很多.txt文件是否有错误,认为.txt文件符合一项服务的规则。例如,它会检查文件中是否包含必填词——如示例所示。 // 如果我立即看到所有错误,我可以快速修复它们。我不认为,每次失败后退出程序 - 在我的情况下是一个好的行为。 -
@Axalix:
If you really want to check all the files, you can "autogenerate" those methods-tests and run one after another or just make a method (not test) that will print "failing" info about all the files first and then run a test, that will fail after a first issue.— 现在警告和错误只打印到我的控制台,但测试仍被视为passed。我可以看到所有警告和错误。我还可以编写另一个.py文件,每次失败后程序将以退出代码1 退出。该文件将在第一个文件之后运行。但是我会有很多重复的代码。谢谢。 -
@Axalix:我simplify example。谢谢。
标签: python python-3.x exit-code