另一个动作后运行方法

问题描述 投票:-1回答:2

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. Tests passed

如果所有测试都通过,则打印到控制台:

Test for all files successful passed

3.2. Tests failed

例如,如果我的一个测试失败了SashaExample.txt

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

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


4.没有帮助

4.1. exit(1) after else

如果:

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. Another attempts

  1. 在谷歌,我没有找到,我如何解决我的问题;
  2. 我读了Python函数,方法,atexit,但我不明白,我怎么能解决这个问题。
python python-3.x exit-code
2个回答
1
投票

这是一个简单的编程概念,称为FLAGS。谷歌有点,你会看到很简单。

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')

1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.