从测试脚本中运行 pytest 测试用例

sas*_*uke 5 python emacs pytest

所有 pytest 文档都指定这py.test file_name是运行 pytest 测试用例的标准方法。但我在 Emacs 中进行开发,Python 脚本位于左窗格中,Python 解释器位于右窗格中。

我的工作流程是对 Python 脚本进行更改CTRL-C C(以便将更新的更改发送到 REPL)并移动到 REPL ( CTRL-O),以便测试更新的代码。如果我可以更改左侧的测试用例,移动到右侧的 REPL 屏幕并执行更新的测试用例,那就太好了。

有没有办法从 REPL 或在脚本中运行 pytest 测试用例,而不是生成 shell 并运行 pytest 命令?

编辑:顺便说一句,我确实尝试使用mainpytest 中的函数并在脚本中调用它,但由于一些有趣的原因,除非我杀死旧的 REPL 并启动一个新的,否则不会拾取更改。其他 Python 脚本不会发生这种情况,所以我确信这与 pytest 有关。这是代码:

def test_add():
  assert myadd(1, 2) == 3

if __name__ == '__main__':
  pytest.main()
Run Code Online (Sandbox Code Playgroud)

And*_*ler 0

以下是 @Conrad.Dean 的评论。似乎将测试放入 pytest.py 中是一种有用的约定。下面的例子说明了 的作用if __name__ == '__main__'

def myadd(first, second):
    return first + second

def test_add():
  assert myadd(1, 2) == 3

if __name__ == '__main__':
  print("Running test_add")
  test_add()
Run Code Online (Sandbox Code Playgroud)