我正在运行一个小 python 项目来收集数据。它由预定的 GitHub Action 脚本触发(每天午夜)。作为扩展项目的一部分,我已将pycaret库添加到项目中。因此,目前安装项目的需求大约需要 15 分钟,再加上运行 python 项目还需要 10 分钟。但有趣的是,现在动作/工作被杀死了:
/home/runner/work/_temp/bad86621-8542-4ea5-ae93-6f59b7ee2463.sh: line 1: 4382 Killed
python main.py
Error: Process completed with exit code 137.
Run Code Online (Sandbox Code Playgroud)
现在我尝试查找进程被杀死的原因,但我在 GitHub Actions 中找不到任何内容,我正在 GitHub Actions 中的 ubuntu 最新计算机上运行该作业。我已将作业超时设置为 60 分钟,所以我认为这不是问题。
我有这个问题,我创建了一个由 PyTest 测试组成的测试套件,它们打包在一个类中,示例如下:
class TestExecutor(object):
@classmethod
def setup_class(cls):
pass
def test_testuiteStructure(self):
pass
Run Code Online (Sandbox Code Playgroud)
我还在同一个 .py 文件中创建了以下代码来调用 pytest 执行:
if __name__ == "__main__":
pytest.main()
Run Code Online (Sandbox Code Playgroud)
当我在终端 pythontests.py 中执行时看到的行为很好。当我使用 PyInstaller 将文件打包成可执行的 .exe 文件时,问题就开始了(我需要这个来简化执行过程,因为我在多台机器上运行测试),当我执行创建的 .exe 文件时,我收到以下消息:
============================= test session starts ==================
platform win32 -- Python 2.7.14, pytest-3.2.5, py-1.4.34, pluggy-0.4.0 --
....
....
....
collected 0 items
Run Code Online (Sandbox Code Playgroud)
这意味着没有测试,有人知道我如何解决它吗?
所以我设计了一个 Pytest 测试包,其中包含一个 python 脚本:
\n\nclass TestClass():\n\n test_a()\n\n test_b()\nRun Code Online (Sandbox Code Playgroud)\n\n我想知道是否可以将测试打包为可执行文件并运行它?\n原因是我想避免在我\xe2\x80\x99m 要执行测试的所有计算机上安装 python 和 python 包。
\n当我使用夹具运行测试时,我想在运行时动态命名测试@pytest.mark.parametrize("value",values_list)。例如:
values_list=['apple','tomatoes','potatoes']
@pytest.mark.parametrize("value",values_list)
def test_xxx(self,value):
assert value==value
Run Code Online (Sandbox Code Playgroud)
我想看到的最终结果是 3 个测试,名称如下:
测试苹果
测试番茄
测试土豆
我尝试查看 pytest 文档,但我还没有发现任何可能阐明这个问题的内容。