python: 如何对我的github-markdown文件进行doctest?

16 投票
4 回答
2403 浏览
提问于 2025-04-18 03:57

我想运行这个文件里的测试,但我不太清楚该怎么做:

README.md:

# WELCOME!

This library is helpful and will help you in _many_ ways!

For example:

```
>>> import library
>>> library.helps()
True
```

(顺便问一下,有人能帮我让这个以markdown格式高亮显示吗?)

4 个回答

1

我是上面提到的phmdoctest的作者/拥有者。

请编辑原始问题的README.md文件,确保你想要测试的代码块以

```python

开头。

然后运行

phmutest README.md --replmode --log

phmutest

与phmdoctest相比,phmutest有以下新功能:

  • 可以将Markdown文件中的所有代码块作为一个整体进行测试。
  • 使用Python标准库的测试工具来内部运行测试。
  • 调用者可以提供自己的Python初始化和清理代码。
  • 可以在pytest测试用例中调用。
  • 一个示例可以跨多个文件进行扩展。
1

我刚发现了这个phmdoctest包,它似乎可以很好地与常见的Python高亮Markdown一起使用:

Any text here for example...
```python
print(1+2)
```
sample output:
```
3
```

还有一个简单的用法:

phmdoctest README.md --outfile tests/test_readme.py
python -m pytest tests -v

在第一行,你可以生成一个新的测试文件,之后只需对整个项目进行标准测试就可以了……

12

你可以在命令行中对你的 README 文件运行 doctest,方法是使用以下命令:

python -m doctest -v README.md

这里的 -m 参数 是告诉 Python 运行后面的模块作为一个脚本。当你以脚本的方式运行时,doctest 模块会在指定的文件上执行 doctest.testmod 这个函数。最后,-v 参数让 doctest 以详细模式运行;如果关闭这个模式,doctest 只会在至少有一个测试失败时输出结果(如果所有测试都通过,它就不会输出任何内容)。

6

作为一种替代方案,我写了一个叫做 mkcodes 的脚本,它可以从markdown文件中提取代码块,这样我们就可以在一个单独的文件中进行测试。

下面是我使用mkcodes的实际测试脚本:

mkcodes --github --output tests/docs/test_{name}.py docs
py.test tests
pyflakes tests
pep8 tests

撰写回答