大概描述一下我的问题:
- 创建了一个线程,线程内是能够正常运行的unittest框架的测试脚本
- 测试脚本内加了一个print 操作,线程和线程内测试脚本都正常执行完成,但相关的变量没有print出来
- 原本猜测可能和unittest有关,但去掉外层的线程创建之后,变量能正常打印,
- 所以猜测是否和多线程有关,多线程是否会有相关的影响?
猜测可能是这个原因,还在持续调试中,麻烦帮看看,谢谢
注:当前只创建了一个线程,之所以使用多线程,是有多个线程同步执行case的需求 - 部分代码如下:
#执行case 和多线程创建部分的代码
def run_case():
cur_thread_name = threading.current_thread().name
report_name = Path.date_time + '_' + cur_thread_name + 'Report.html'
testlist = unittest.defaultTestLoader.discover(
start_dir=Path.testcase_path_x_mac
, pattern='test*.py')
result = BeautifulReport(testlist)
result.report(filename=report_name, description='Result of test', log_path=Path.report_path)
class myThread(threading.Thread):
def __init__(self, thread_id, name):
threading.Thread.__init__(self)
self.thread_id = thread_id
self.name = name
def run(self):
print('开启线程:' + self.name + '\n')
run_case()
print('退出线程:' + self.name)
if __name__ == '__main__':
thread_list = []
for i in range(len(ListData.node_list)):
thread_name = ListData.node_list[i]
new_thread = myThread(i, thread_name)
thread_list.append(new_thread)
for thread in thread_list:
thread.start()
for thread in thread_list:
thread.join()
- 部分执行case 部分,加了个print