nonebot / nonebug

NoneBot2 测试框架 / NoneBot2 test framework
https://nonebot.dev/docs/best-practice/testing/
MIT License
28 stars 6 forks source link

更方便地进行收到消息的判断 #2

Closed felinae98 closed 2 years ago

felinae98 commented 2 years ago
  1. 字符串与Message的比较 测试时经常会遇到assert '123' = Message([MessageSegment(type='text', data={'text': '123'})])的问题,能否自动处理一下这种情况
  2. 自定义消息判断 现在只能在测试中完整给出与预期输出一模一样的输出才能通过测试,希望能够新增传入正则表达式等测试方法,或写传入自定义验证代码(否则可能连骰娘都测不了)
ExerciseBook commented 2 years ago

2 我感觉可以简单回复一下。

如果有这种需求,可以考虑自己写一下。

因为单元测试本身就是要求完全一致。

你可以这样操作。这个测试期望返回值是 True

然后你的代码里就这样写

actual_result = 你的功能()
if 你觉得对(actual_result) :
    return True
else :
    return False
yanyongyu commented 2 years ago
  1. 字符串与Message的比较

测试是严谨的断言,不仅是内容比较,也是类型比较。string类型明显于预期Message类型不符,属于测试不通过。
例如 onebot 协议中,matcher.send("[CQ:foo]")matcher.send(Message("[CQ:foo]")) 是两种完全不同的意义

  1. 自定义消息判断

测试中的随机事件尽量用 monkeypatch 替换掉,详情可以参考 pytest 文档,正则的话可能以后会考虑