首页 > 后端开发 > Python教程 > # 从 Jest 到 Pytest:JavaScript 开发人员的 Python 测试之旅

# 从 Jest 到 Pytest:JavaScript 开发人员的 Python 测试之旅

Barbara Streisand
发布: 2024-11-17 09:25:03
原创
161 人浏览过

# From Jest to Pytest: A JavaScript Developer

从 Jest 到 Pytest:JavaScript 开发人员的 Python 测试之旅

作为一名具有 JavaScript 背景的开发人员,我花了相当多的时间使用 Jest 编写测试。在我的项目 gimme_readme 中,由于我使用的是第 3 方 npm 模块,我必须使用 Node 和 Jest 来尝试一些实验性功能。我找到了很棒的 Stack Overflow 线程,教我如何在使用 ES6 语法时运行 Jest 测试。如果没有这些聪明人的智慧,我只能说我会很挣扎!然而,有了如何使用 Jest 实验功能的知识,我能够:

  1. 用 Jest 编写我的测试(尽管我的配置很奇怪)
  2. 很早就设置了我的 CI 管道,其设置为:
    1. lint 我的代码(即,检查将来可能出现问题或可能导致现在的错误的任何潜在代码行)
    2. 测试我的源代码(即运行我编写的测试来解释我的源代码应该如何工作)。

我上面描述的 CI 管道的代码可以在这里找到,并且设置为在向任何分支进行推送或有拉取请求时运行。这样,任何试图为我的存储库做出贡献的人都会知道他们贡献的代码是否“足够好”,可以将其合并到我的主分支中 - 至少就自动化测试而言是这样。

不管怎样,我早先为我的存储库所做的工作已经足够了。

本周,我决定接受挑战,为我的朋友 Aryan Khurana 编写的 Python 项目编写一些测试。 Aryan 的项目是一个名为 github-echo 的命令行工具,它提供了有关 GitHub 存储库的见解。使用陌生的语言和我从未使用过的测试框架(PyTest)绝对超出了我的舒适区,但我真的很感激 Aryan 愿意向我展示诀窍(感谢 Aryan!)。

使用 pytest 测试 Python 代码

当我开始对 Aryan 的存储库进行测试时,我立即对这些测试的不同外观感到不知所措。虽然 Jest 对我来说已经很熟悉了,但 Python 的 pytest 却感觉很陌生。尽管如此,在Aryan的指导和决心下,我开始了解它的独特之处。

让我们分解一下我在他们的测试用例中发现的内容:

参数化测试:首先引起我注意的是@pytest.mark.parametrize装饰器。这与 Jest 的 test.each 类似,但语法更清晰:

   @pytest.mark.parametrize(
       'invalid_url',
       [
           'https://gitlab.com/username/repository',
           'https://github.com/username',
           # ... more test cases
       ],
   )
登录后复制
登录后复制

上下文管理器:Python 使用 pytest.raises 上下文管理器,而不是 Jest 的 Expect().toThrow():

   @pytest.mark.parametrize(
       'invalid_url',
       [
           'https://gitlab.com/username/repository',
           'https://github.com/username',
           # ... more test cases
       ],
   )
登录后复制
登录后复制

临时文件系统:测试使用 pytest 的 tmp_path 固定装置进行文件系统操作,这比在 Jest 中设置模拟文件系统要干净得多:

   with pytest.raises(typer.BadParameter, match='Invalid GitHub repository URL'):
      check_cli_arguments(invalid_url, 'gemini', 0.5, Path('output.md'))
登录后复制

最后的想法

使用 JavaScript 和 Python 测试框架的经验拓宽了我对软件测试的视野。虽然 Jest 感觉像是我的家乡,但我开始欣赏 pytest 的强大功能,例如参数化测试和固定装置。无论您是编写 JavaScript 还是 Python 测试,最终目标都是一样的:向用户提供可靠、经​​过良好测试的代码。

以上是# 从 Jest 到 Pytest:JavaScript 开发人员的 Python 测试之旅的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:dev.to
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板