自动测试不一致的机器人…不和谐的机器人!
distest的Python项目详细描述
距离
一个小库,用于为不一致的机器人程序编写自动测试。
测试框架最初由dxsmiley编写,更新到由我完成的重写和重新工作的ui,通过alobsterdog的大量帮助
刚刚为1.0做好了准备,只需要再添加一些功能。不过,在我将所有内容都设置为1.0之前,希望命令行参数和其他所有内容都是不稳定的。除了这里的示例之外,我的主bot将很快实现此功能。
安装
运行此命令的最佳方法是git clone
it。下面是机器人的使用示例。
用法
概述
要使用此软件包,必须创建两个机器人帐户。第一个,称为目标,是要测试的bot。如果你已经在这里,你可能已经有了这个机器人的令牌。第二个称为测试仪负责运行测试。
关于这个bot,最重要的是它有两种模式,interactive和cli。如果要从内部不协调手动运行测试,则使用交互模式。我在测试新的测试时也使用它。cli模式允许您启动bot并在不进行任何交互的情况下运行测试,在大多数情况下,使用此软件包时可能需要使用此模式。有关如何使用这两种模式的更多信息,请参阅自述文件。
首先,你需要运行你想测试的机器人。您可以运行此回购提供的示例bot,如下所示:
python example_bot.py TARGET_TOKEN
然后,您必须运行tester bot(这将在交互模式下运行它-稍后显示的cli模式演示):
python example_tester.py TARGET_USERNAME TESTER_TOKEN
请确保在没有鉴别器(1111)的情况下使用bot的用户名,否则bot将无法理解用户是什么
两个bot都运行后,转到两个bot都可以访问的任何不和谐频道,然后键入::run all
运行所有测试。使用::help
获取有关检测仪在交互模式下可以使用的命令的更多信息。
制作自己的测试仪机器人
通过编写函数来进行测试,可以在示例测试仪中看到示例。用@distest.testcollector()
修饰要作为测试运行的函数,它们将可以运行。不要像通常使用discord.py启动bot那样调用run_bot(),而是使用distest.run_dtest_bot()并输入请求的参数。基于用于运行bot文件的sysargs,它将在interactive或cli mod中自动运行bote.基本上,如果你给bot输入-c
参数来指定测试应该运行的通道,bot将自动运行这些通道。否则,它将按如下所述等待不一致的命令。
cli模式
cli模式设计用于以正常方式运行测试,例如在git钩子或ci/cd管道上。下面的文本是help命令的用法片段,后面是我提供的一些更一般的信息。它与帮助消息不同,因为我试图使其更深入。
usage: example_tester.py [-h] [-c channel]
[--run {all,test_reply_matches} | --stats]
target_bot_user tester_bot_token
总是必需的
目标机器人用户
:目标机器人的用户名(无鉴别器)。与上文"概述"部分中所述相同。tester_bot_token
:将用于运行tester bot的令牌。一般情况下也与上述相同。
cli模式
运行
:指定是否运行所有测试或其中的一个子集stats
:以stats模式运行bot。与run
互斥。(不是很有用,可以去掉。如果你以某种方式使用它,打开一个问题让我知道!)频道
:将在其中执行测试的频道ID。只需要int id
其他
-h
:只显示帮助命令。这只是使用信息,帮助中还有其他信息。
示例命令
我用来测试这个机器人的命令可以在run_tester.sh中找到
交互式模式命令
当机器人在交互模式下运行时,您可以在不协调中运行命令。
::stats
Gives details about which tests have been
run and what the results were
::run test_name
Run a particular test. Options are methods decorated
with `@distest.TestCollector()` in the tester bot.
::run all
Run all tests
::run unrun
Run all tests that have not yet been run
::run failed
Run all tests that failed on the most recent run
贡献
请为您的贡献打开一个问题,并标记为贡献来讨论它。我建议在投入数小时和数小时的捐款之前等待答复,但这两种方式都可能获得批准。另一件事是确保您检查github项目,看看是否有其他人已经在工作,你可以帮助它。其他注意事项:
如果您要添加新的测试类型,请确保您对它们进行了良好的测试,以确保它们按预期工作,并且请将它们的使用演示添加到
example_tests()
中,以供其他人查看。完成后,请打开一个公关,我会添加它!我使用黑色作为我的代码格式,如果你也能使用它时,将不胜感激。我会提醒你,当你做公关,如果你不,这是至关重要的,以确保差异不与愚蠢的格式改变混乱。此外,codefactor应该跟踪代码质量并使用prs执行某些操作。我们很快就会看到具体的结果。
确保您的问题进入项目,这就是我们跟踪待办事项和正在进行的事情的方式。
另外,如果你只是想提出一个想法,创建一个问题并用增强标记它。谢谢你的帮助!
待办事项
我以前用这个,现在用githib项目代替。这将不再使用。
- [X]将bot更新为新重写的discord.py 1.0
- []验证每个测试并添加到
example\u tests.py
- []发送消息
- []编辑消息
- []等待反应
- []等待消息
- []等待答复
- []断言消息等于
- [X]assert_消息包含
- []断言消息匹配
- [X]assert_reply_等于
- [X]assert_reply_包含
- [X]assert_reply_匹配
- [X]断言反应等于
- [X]确保静音
- [X]询问人类
- [X]允许从命令行运行测试
- [X]将cli模式部分添加到自述文件中
- [X]根据测试状态设置机器人返回退出代码
- []准备PIP,打包