子进程未与 pytest 错误处理测试一起运行

编程入门 行业动态 更新时间:2024-10-11 21:20:05
本文介绍了子进程未与 pytest 错误处理测试一起运行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我目前正在将我的 unittest 设置转换为 pytest,一切正常,但是在某些测试中,我运行命令行进程以便将代码加载到我通过 USB 连接的硬件中.这个过程在 unittest 中运行良好,但是当使用 pytest 或nose2 时我得到了响应

I am currently converting my unittest setup over to pytest, everything is working however on certain tests I run a command line process in order to load code into the hardware I have attached via USB. this process works fine with unittest however when using pytest or nose2 I get the response

------------------------------------------------ Captured stderr call ------------------------------------------------- Error processing Test

这是在我的进程开始运行时发生的吗?我没有收到错误消息,我不确定为什么没有输出?该命令很好,因为它在 cmd 和 unittest 上运行,我是否缺少某些东西才能使其与 pytest 一起使用?

this happens just when my process begins to run? I get no error message am an unsure why one is not output? The command is fine as it runs on cmd and unittest is there something I am missing in order to make it work with pytest?

供参考我正在运行的课程

For reference my class I am running

class LoadCode(): def __init__(self, comport): ''' Constructor ''' self.filename = None self.code_comport = comport self.code_loaded = False self.logger = logging.getLogger(__name__) def set_code_filename(self, new_file_name): ''' Sets the filename parameter for loading the code ''' if (self.filename != new_file_name): self.filename = new_file_name self.logger.info("Setting code File to " + self.filename) self.code_loaded = False else: self.logger.info("Code File Name Is Already Set !") def write_code(self): REBOOT_TIME = 50 #approximatly 50 seconds if enough for a reboot after loading boot and main and enough time for SUCCESSFUL_RETURNCODE = 0 # 0 is a successful return code for subprocess if(self.filename != None and self.code_comport != None): #set up command line to run command = <<COMMAND>> self.logger.info("Running: " + command) #run command line as subprocess (thread will wait for command line to finish) load_code = subprocess.run(command) #successful returncode = 0 anything else means an error has occured during subprocess subprocess.CompletedProcess(args=[command], returncode = SUCCESSFUL_RETURNCODE) if (load_code.returncode == SUCCESSFUL_RETURNCODE ): self.code_loaded = True self.logger.info(self.filename) time.sleep(REBOOT_TIME) #Allow reboot else: raise AssertionError("ERROR: No code File Set/No Comport Set") self.is_code_loaded() def is_code_loaded(self): '''check the bool of code to ensure it has successfully ran ''' if self.code_loaded == False: Print("Failed") raise AssertionError("Code Was Not Loaded ..") else: print("WORKED")

推荐答案

subprocess.CompletedProcess(args=[command], returncode = SUCCESSFUL_RETURNCODE)

这行代码不需要,因为它从 subproccess.run() 返回.感谢@Masklinn 指出这一点.详细信息:python.readthedocs.io/en/latest/library/subprocess.html?highlight=CompletedProcess

this line of code is not needed as it returns from subproccess.run(). thanks @Masklinn for pointing that out. details: python.readthedocs.io/en/latest/library/subprocess.html?highlight=CompletedProcess

生成的路径中间有空格,开头没有空格,这就是命令没有运行并返回错误的原因!现在我的子流程在 pytest 和nose2 上工作得很好!:)

The path that was generated contained spaces in the middle and did not have one at the start which is why the command did not run and the error was returned! now my subprocess work perfectly fine with pytest and nose2 ! :)

更多推荐

子进程未与 pytest 错误处理测试一起运行

本文发布于:2023-11-14 04:02:23,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1586161.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:进程   错误   测试   pytest

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!