通过请求检查远程呼叫

MonitorRequests的Python项目详细描述


Build StatusPyPI

通过requests模块检查远程调用的工具。

找出您的代码正在调用的外部api。

可选:
  • 找到打电话的地方。
  • 捕获响应和响应状态代码。
  • 按域筛选
  • 作为并行测试的服务器运行

用法

importunittestimportmonitor_requestsfromexampleimportexample_methodclassExampleTestCase(unittest.TestCase):@classmethoddefsetUpClass(cls):cls.monitor=monitor_requests.Monitor()@classmethoddeftearDownClass(cls):print('External calls for example:')# Optionally pass tracebacks=False to skip outputing tracebacks# Report will call .stop() by default.cls.monitor.report(tracebacks=False)deftest_example_method(self):result=example_method()self.assertEqual(result.status_code,200)if__name__=='main':unittest.main()

要筛选捕获的域:

# Only capture facebook and google requests:monitor=monitor_requests.Monitor(domains=['facebook\.com','google\.com'])

要在django测试运行程序中设置此项: (如果以串行方式运行测试,则此操作仅在套件级别有效。根据您的设置,您可能需要使用–parallel=1)运行。另外,还有一些关于如何使用服务器模式异步地将数据推送到包含的tornado数据服务器的说明。

defrun_suite(self,suite,**kwargs):monitor=monitor_requests.Monitor()test_result=super(ReelioTestRunner,self).run_suite(suite,**kwargs)monitor.report()returntest_result

在py.test会话设备中设置:

@pytest.fixture(scope='session')defsession_fixture():monitor=monitor_requests.Monitor()yieldmonitor.report()

写入文件:

@classmethoddeftearDownClass(cls):withopen('output.txt','w')asf:cls.monitor.report(output=f)

对于输出的微调控制:

  • 使用debug=true显示URL、响应和回溯。
  • 使用urls=true显示URL。
  • 使用tracebacks=truerespones=true显示回溯或响应(也将显示URL,回溯和响应都按URL组织)。

*服务器模式*

如果要激活对并行运行的整个测试套件的监视器请求,可以运行包含的tornado服务器来保存请求数据:

monitor_requests_server --port=9003
defrun_suite(self,suite,**kwargs):# Make sure to turn off mocking at the suit or session level.monitor=monitor_requests.Monitor(server_port=9003,mock=False)test_result=super(ReelioTestRunner,self).run_suite(suite,**kwargs)monitor.report()returntest_result

您需要在测试用例类中执行其他调用:

classExampleTestCase(unittest.TestCase):@classmethoddefsetUpClass(cls):# Same port, and same domain filtering if applicable.cls.monitor=monitor_requests.Monitor(server_port=9003)@classmethoddeftearDownClass(cls):# Make sure to stop the mocking in the tear down.cls.monitor.stop()

注意,这里没有teardownclass,也没有对stop()或report()的调用。 这只发生在会话级别。

安装

pip install MonitorRequests

示例输出

使用debug=true

__________URLS__________

__________URL________
URL:      http://facebook.com?param=test
Requests: 1
______Tracebacks_____
File "example.py", line 22, in <module>
    run()
  File "example.py", line 18, in run
    get_function_fb()
  File "example.py", line 12, in get_function_fb
    return requests.get('http://facebook.com?param=test')
_______Responses______
<StatusCode>200</StatusCode>
<Content><!DOCTYPE html>
<html lang="en" id="facebook" class="no_js">Etc/Etc</html></Content>

__________URL________
URL:      http://google.com
Requests: 1
______Tracebacks_____
File "example.py", line 22, in <module>
    run()
  File "example.py", line 17, in run
    get_function()
  File "example.py", line 7, in get_function
    return requests.get('http://google.com')
_______Responses______
<StatusCode>200</StatusCode>
<Content><!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="en">Etc/Etc</html></Content>

___________Analysis__________

Total Requests: 2
Time (Seconds): 1.16714
URL Count:      2
Domain Count:   2
Domains:        facebook.com, google.com

使用debug=false

___________Analysis__________

Total Requests: 2
Time (Seconds): 1.08454
URL Count:      2
Domain Count:   2
Domains:        facebook.com, google.com

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

推荐PyPI第三方库


热门话题
java如何使用文件路径获取文件位置?   java XPath从某个元素后的元素获取文本   具有多个名称空间的JavaDOM   使用hibernate在表别名处出现java意外令牌错误   springdatajpa中的java交叉连接   在firebase中循环时使用java空指针   如何使用java驱动程序执行mongodb getShardDistribution()   swing Java GUI在另一个方法的新窗口中显示文本   java如何使用Google Guava为每个新地图条目设置不同的过期超时?   在视图寻呼机中将数据从活动传递到片段时,找不到id片段的java视图   Java 8 Lambda流筛选器更改值   java为什么在程序中不使用main方法时Eclipse不会显示错误。   java JavaFX文件选择器显示自定义选项   swing Java程序在MAC上未正确运行   java使用Twitter4j发布twitter线程   JMS请求访问被拒绝后,java jedis无法连接到redis   java GETSTATE weblogic命令花费的时间太长,有什么建议吗?   java如何将此代码转换为Racket/Scheme   java如何使用经度和纬度获取地址   java是我的Glassfish设置泄漏内存吗?