概念 | 监听调用 | 预设期望 | 按需预设期望 | 真实数据 | 真实数据修改 |
---|---|---|---|---|---|
Dummy 傀儡对象 | |||||
Spy 间谍对象 | √ | ||||
Fake 假对象 | √ | √ | |||
Stub 桩对象 | √ | √ | |||
Mock 模拟对象 | √ | √ | √ | √ | √ |
假对象实际上有工作实现,但通常采取一些捷径,这使得它们不适合生产(纯内存数据库就是一个很好的例子)。
为测试期间调用提供预设答案,通常根本不响应任何超出测试程序的内容。
模拟预编程了期望,这些期望形成了他们期望接收的调用的规范。如果他们收到了他们不期望的调用,他们可以抛出异常,并在验证过程中进行检查以确保他们得到了他们期望的所有调用。
import sys
from mitmproxy import ctx
from mitmproxy import tcp
from mitmproxy.utils import strutils
from mitmproxy.tools.main import mitmdump
def tcp_message(flow: tcp.TCPFlow):
message = flow.messages[-1]
old_content = message.content
message.content = old_content.replace(
b":0;localabstract:webview_devtools_remote_",
b": 0;localabstract:xweb_devtools_remote_"
)
ctx.log.info(
"[tcp_message{}] from {} to {}:\n{}".format(
" (modified)" if message.content != old_content else "",
"client" if message.from_client else "server",
"server" if message.from_client else "client",
strutils.bytes_to_escaped_str(message.content))
)
if __name__ == '__main__':
sys.argv = ["", "-p", "5038", "--rawtcp", "--mode", "reverse:http://localhost:5037/", "-s", sys.argv[0], "-vv"]
mitmdump()
mitmproxy:交互式的命令行工具
mitmweb:基于浏览器的界面交互工具
mitmdump:简单的终端输出,可以编写强大的插件和脚本
官方网站:mitmproxy.org/
// 方式一
pip install mitmproxy==5.2.0
// 方式二
pip install pipx
pipx install mitmproxy==5.2.0
// 验证是否安装成功
mitmdump --version
-p
?参数,指定监听端口,默认监听 8080-s
?参数,执行 python 脚本最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!?