自动测试不一致的机器人…不和谐的机器人!

distest的Python项目详细描述


距离

代码因子生成状态pypi version

一个小库,用于为不一致的机器人程序编写自动测试。

测试框架最初由dxsmiley编写,更新到由我完成的重写和重新工作的ui,通过alobsterdog的大量帮助

刚刚为1.0做好了准备,只需要再添加一些功能。不过,在我将所有内容都设置为1.0之前,希望命令行参数和其他所有内容都是不稳定的。除了这里的示例之外,我的主bot将很快实现此功能。

安装

运行此命令的最佳方法是git cloneit。下面是机器人的使用示例。

用法

概述

要使用此软件包,必须创建两个机器人帐户。第一个,称为目标,是要测试的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,打包

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
JavaCenter是JavaFX2中不可执行的窗格   java Docker将容器连接到本地数据库   java无法通过Spring从Redis获得正确的值   java为什么要将数组转换为列表再转换为数组   Java泛型在方法中放入字符串或整数参数   在Cloud Bigtable SDK中找不到java类   java Mavensiteplugin无法加载生成的源(Jaxb)   java GWT序列化和Appengine通道Api   PrintWriter out=new PrintWriter(sWriter)和PrintWriter out=response之间的java差异。getWriter()   空手道DSL中的javascript,在java参数调用中传递变量时如何转义单引号   windows 64位java可以与32位tomcat一起使用   为for循环| Java输入参数   java您可以更改SWT选项卡项的背景和/或前景颜色吗?   用java生成6位pin码   java如何从另一个通量中排除通量中的所有元素   java无法调用“javafx.scene.control.ComboBox.getItems()”,因为“Controller.getMyBox()”的返回值为null   将Java字符串与数组匹配时出现问题   java如何使用HttpsUrlConnection对SSL连接使用代理身份验证?   java如何检查XML元素是否包含CDATA?