运行 方法在另一个动作之后

Run method after another actions

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:

  1. 打印First test failure for SashaExample.txt;
  2. 继续先测试另一个文件;
    1. 如果有更多错误First test failure for AnotherExample.txt,将错误打印到控制台并继续测试;
  3. exit(1) 在 运行 完成所有测试后。

我需要 exit(1),如果我使用 Travis CI 或 AppVeyor,我可以看到我的测试有错误。


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。另一种尝试

  1. 我在 Google;
  2. 中找不到如何解决我的问题
  3. 我阅读了 Python 函数、方法,atexit,但我不明白,我该如何解决这个问题。

问题似乎是如果有任何失败,您需要在程序结束时调用 exit(1)。如果是这种情况,您可以使用一个变量,比如 failureFound,初始化为 False(因为您还没有找到任何变量)并在发现失败时设置为 True。然后,在程序结束时,如果 failureFound 为真,则调用 exit(1).

这是一个简单的编程概念,称为 FLAGS。 Google 一点点,你会发现很简单。

all_passed = True
# 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)
        all_passed=False
        continue

if all_passed:
    print('All test passed')