
> Modern style test report based on unittest framework.
基于unittest框架现代风格测试报告。
### 特点
* 简洁、美观具有现代风格的测试报告。
* 支持`HTML`、`XML`两种格式。
* 支持`单元`、`Web UI`、`API`各种类型的测试。
* 集成`邮件/钉钉/企微/飞书` 发送消息。
* 支持用例`错误/失败`重跑。
* 支持标签黑、白名单。
* 针对`Selenium`运行失败/错误自动截图。
* 支持多语言:`en`、`zh-CN`(注:仅HTML格式)。
## Report

## Install
```shell
> pip install XTestRunner
```
If you want to keep up with the latest version, you can install with github repository url:
```shell
> pip install -U git+https://github.com/SeldomQA/XTestRunner.git@master
```
## demo
查看更多使用 [例子](./tests)。
* unittest测试
```python
import unittest
from XTestRunner import HTMLTestRunner
class TestDemo(unittest.TestCase):
"""测试用例说明"""
def test_success(self):
"""执行成功"""
self.assertEqual(2 + 3, 5)
@unittest.skip("skip case")
def test_skip(self):
"""跳过用例"""
pass
def test_fail(self):
"""失败用例"""
self.assertEqual(5, 6)
def test_error(self):
"""错误用例"""
self.assertEqual(a, 6)
if __name__ == '__main__':
suit = unittest.TestSuite()
suit.addTests([
TestDemo("test_success"),
TestDemo("test_skip"),
TestDemo("test_fail"),
TestDemo("test_error")
])
with(open('./result.html', 'wb')) as fp:
runner = HTMLTestRunner(
stream=fp,
title='<project name>test report',
description='describe: ... ',
language='en',
rerun=3
)
runner.run(suit)
```
## Document
更多例子,请阅读 [中文文档](./docs/README.md)
## 其他
### 感谢
感谢从以下项目中得到思路和帮助。
* [HTMLTestRunner](http://tungwaiyip.info/software/HTMLTestRunner.html)
* [HTMLTestRunner_cn](https://github.com/GoverSky/HTMLTestRunner_cn)
* [Theme style](https://clever-dashboard.webpixels.work/pages/tasks/list-view.html)
### 静态文件服务
1.添加静态文件到github项目。
https://github.com/defnngj/Telegraph-Image
2.cloudflare提供免费的访问域名。
https://dash.cloudflare.com/
Raw data
{
"_id": null,
"home_page": "https://github.com/seldomQA/XTestRunner/",
"name": "XTestRunner",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.8",
"maintainer_email": null,
"keywords": null,
"author": "bugmaster",
"author_email": "fnngj@126.com",
"download_url": "https://files.pythonhosted.org/packages/9f/04/43c3f801e1a14bbbf4eba0909a30b71426802c1335ae26619608dea61ff2/xtestrunner-1.8.4.tar.gz",
"platform": null,
"description": "\n\n> Modern style test report based on unittest framework.\n\n\u57fa\u4e8eunittest\u6846\u67b6\u73b0\u4ee3\u98ce\u683c\u6d4b\u8bd5\u62a5\u544a\u3002\n\n### \u7279\u70b9\n\n* \u7b80\u6d01\u3001\u7f8e\u89c2\u5177\u6709\u73b0\u4ee3\u98ce\u683c\u7684\u6d4b\u8bd5\u62a5\u544a\u3002\n* \u652f\u6301`HTML`\u3001`XML`\u4e24\u79cd\u683c\u5f0f\u3002\n* \u652f\u6301`\u5355\u5143`\u3001`Web UI`\u3001`API`\u5404\u79cd\u7c7b\u578b\u7684\u6d4b\u8bd5\u3002\n* \u96c6\u6210`\u90ae\u4ef6/\u9489\u9489/\u4f01\u5fae/\u98de\u4e66` \u53d1\u9001\u6d88\u606f\u3002\n* \u652f\u6301\u7528\u4f8b`\u9519\u8bef/\u5931\u8d25`\u91cd\u8dd1\u3002\n* \u652f\u6301\u6807\u7b7e\u9ed1\u3001\u767d\u540d\u5355\u3002\n* \u9488\u5bf9`Selenium`\u8fd0\u884c\u5931\u8d25/\u9519\u8bef\u81ea\u52a8\u622a\u56fe\u3002\n* \u652f\u6301\u591a\u8bed\u8a00\uff1a`en`\u3001`zh-CN`\uff08\u6ce8\uff1a\u4ec5HTML\u683c\u5f0f\uff09\u3002\n\n## Report\n\n\n\n## Install\n\n```shell\n> pip install XTestRunner\n```\n\nIf you want to keep up with the latest version, you can install with github repository url:\n\n```shell\n> pip install -U git+https://github.com/SeldomQA/XTestRunner.git@master\n```\n\n## demo\n\n\u67e5\u770b\u66f4\u591a\u4f7f\u7528 [\u4f8b\u5b50](./tests)\u3002\n\n* unittest\u6d4b\u8bd5\n\n```python\nimport unittest\nfrom XTestRunner import HTMLTestRunner\n\n\nclass TestDemo(unittest.TestCase):\n \"\"\"\u6d4b\u8bd5\u7528\u4f8b\u8bf4\u660e\"\"\"\n\n def test_success(self):\n \"\"\"\u6267\u884c\u6210\u529f\"\"\"\n self.assertEqual(2 + 3, 5)\n\n @unittest.skip(\"skip case\")\n def test_skip(self):\n \"\"\"\u8df3\u8fc7\u7528\u4f8b\"\"\"\n pass\n\n def test_fail(self):\n \"\"\"\u5931\u8d25\u7528\u4f8b\"\"\"\n self.assertEqual(5, 6)\n\n def test_error(self):\n \"\"\"\u9519\u8bef\u7528\u4f8b\"\"\"\n self.assertEqual(a, 6)\n\n\nif __name__ == '__main__':\n suit = unittest.TestSuite()\n suit.addTests([\n TestDemo(\"test_success\"),\n TestDemo(\"test_skip\"),\n TestDemo(\"test_fail\"),\n TestDemo(\"test_error\")\n ])\n\n with(open('./result.html', 'wb')) as fp:\n runner = HTMLTestRunner(\n stream=fp,\n title='<project name>test report',\n description='describe: ... ',\n language='en',\n rerun=3\n )\n runner.run(suit)\n```\n\n## Document\n\n\u66f4\u591a\u4f8b\u5b50\uff0c\u8bf7\u9605\u8bfb [\u4e2d\u6587\u6587\u6863](./docs/README.md)\n\n## \u5176\u4ed6\n\n### \u611f\u8c22\n\n\u611f\u8c22\u4ece\u4ee5\u4e0b\u9879\u76ee\u4e2d\u5f97\u5230\u601d\u8def\u548c\u5e2e\u52a9\u3002\n\n* [HTMLTestRunner](http://tungwaiyip.info/software/HTMLTestRunner.html)\n\n* [HTMLTestRunner_cn](https://github.com/GoverSky/HTMLTestRunner_cn)\n\n* [Theme style](https://clever-dashboard.webpixels.work/pages/tasks/list-view.html)\n\n### \u9759\u6001\u6587\u4ef6\u670d\u52a1\n\n1.\u6dfb\u52a0\u9759\u6001\u6587\u4ef6\u5230github\u9879\u76ee\u3002\n\nhttps://github.com/defnngj/Telegraph-Image\n\n2.cloudflare\u63d0\u4f9b\u514d\u8d39\u7684\u8bbf\u95ee\u57df\u540d\u3002\n\nhttps://dash.cloudflare.com/\n\n",
"bugtrack_url": null,
"license": "Apache-2.0",
"summary": "Modern style test report based on unittest framework.",
"version": "1.8.4",
"project_urls": {
"Homepage": "https://github.com/seldomQA/XTestRunner/",
"Repository": "https://github.com/seldomQA/XTestRunner/"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "6afa4b3ec02e7313c9b5076ac9ed8640813ee4971809cc503c11f2876e97bf22",
"md5": "00be9c2d165626b06b8c16258c6e51b0",
"sha256": "2d2db1b8e573b36afd7d5bb7fbe8a834794e0c776711f5dfdd8036e2e1037f4a"
},
"downloads": -1,
"filename": "xtestrunner-1.8.4-py3-none-any.whl",
"has_sig": false,
"md5_digest": "00be9c2d165626b06b8c16258c6e51b0",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.8",
"size": 554942,
"upload_time": "2025-01-17T16:27:37",
"upload_time_iso_8601": "2025-01-17T16:27:37.952004Z",
"url": "https://files.pythonhosted.org/packages/6a/fa/4b3ec02e7313c9b5076ac9ed8640813ee4971809cc503c11f2876e97bf22/xtestrunner-1.8.4-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "9f0443c3f801e1a14bbbf4eba0909a30b71426802c1335ae26619608dea61ff2",
"md5": "dcdbfd2e7c530b04203a3af8e62e7e26",
"sha256": "9b8254aacb6a280a4a8e4f68160774a1d4d092315b347eedf291e21763dede0f"
},
"downloads": -1,
"filename": "xtestrunner-1.8.4.tar.gz",
"has_sig": false,
"md5_digest": "dcdbfd2e7c530b04203a3af8e62e7e26",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.8",
"size": 543561,
"upload_time": "2025-01-17T16:27:40",
"upload_time_iso_8601": "2025-01-17T16:27:40.930004Z",
"url": "https://files.pythonhosted.org/packages/9f/04/43c3f801e1a14bbbf4eba0909a30b71426802c1335ae26619608dea61ff2/xtestrunner-1.8.4.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-01-17 16:27:40",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "seldomQA",
"github_project": "XTestRunner",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "xtestrunner"
}