【发布时间】:2020-07-29 19:59:42
【问题描述】:
如果我有这个代码
def soft_assert(condition):
if not condition:
print('start')
traceback.print_stack()
print('finish')
soft_assert(False)
soft_assert(False)
每次运行时输出都不一样:
File "/Users/spleshakov/Documents/api-testing-with-pytest/tenants/test_uc.py", line 38, in <module>
soft_assert(False, 'message 1')
File "/Users/spleshakov/Documents/api-testing-with-pytest/tenants/test_uc.py", line 30, in soft_assert
traceback.print_stack()
File "/Users/spleshakov/Documents/api-testing-with-pytest/tenants/test_uc.py", line 41, in <module>
soft_assert(False, 'message 4')
File "/Users/spleshakov/Documents/api-testing-with-pytest/tenants/test_uc.py", line 30, in soft_assert
traceback.print_stack()
start
finish
start
finish
或
start
finish
start
finish
File "/Users/spleshakov/Documents/api-testing-with-pytest/tenants/test_uc.py", line 38, in <module>
soft_assert(False)
File "/Users/spleshakov/Documents/api-testing-with-pytest/tenants/test_uc.py", line 30, in soft_assert
traceback.print_stack()
File "/Users/spleshakov/Documents/api-testing-with-pytest/tenants/test_uc.py", line 41, in <module>
soft_assert(False)
File "/Users/spleshakov/Documents/api-testing-with-pytest/tenants/test_uc.py", line 30, in soft_assert
traceback.print_stack()
输出可以是你能想到的任何顺序
这对我来说没有意义,我找不到答案,所以我希望社区可以帮助我解决这些问题:
- 为什么会这样?
- 如何让
print等待完成,然后再执行另一个?
谢谢
【问题讨论】:
-
这是 javascirpt Promise 的某种类似物吗?
-
我无法在 3.7.6 上重新创建此行为。按预期工作。
标签: python python-3.x stdout python-3.7 stderr