知行编程网知行编程网  2023-01-07 12:30 知行编程网 隐藏边栏  0 
文章评分 0 次,平均分 0.0
导语: 本文主要介绍了关于如何处理单元测试中的请求?的相关知识,包括在性能测试中关于数据准备,以及单元测试报告中包含什么内容这些编程知识,希望对大家有参考作用。

代码对于任何学习编程的人来说都是必不可少的。学习了单元测试的基础之后,我们就可以去测试一些数据库了。一些数据库和网络请求难倒了一些小伙伴。今天就来看看如何处理吧。

之前有同学问如何处理与数据库和网络请求的交互,结合我之前写单元测试的一些经验:



  • 处理数据库请求:目前我看到两种方式。无论使用哪种方式,尽量保证数据在测试时插入,使用后销毁。这样的话,还是很容易构造出另一个平台的测试


    ,也容易在

    CI 系统跑。



  • 使用

    fixture 类装饰器在一个 TestCase 运行前插入数据到测试数据库。大概就是 fixture 接收一个参数 sql 文件名,然后读取数据插入数据库





  • TestCase 的 setup 里插入数据,在 teardown 里销毁。

@fixture('table.sql')
class SomeTestCase:
    pass
 
class SomeTestCase:
    def setUp(self):
        # insert value
    def tearDown(self):
        # destroy value


处理外部网络调用。依旧有两种方式

  • 存根:用来处理一些比较通用的请求,比如一个发号人的代码
  • mock:最常用的替代网络请求的方式,几乎所有场景都可以使用。个人建议所有的网络请求和rpc调用都可以使用mock.patch来模拟返回值
@registry.stub
class ZoneSeqStub(BaseStub):
    def id(self):
        return 'zone:///seqd'
 
    @stub('Seq.get_id')
    def get_id(self, **kwargs):
        return random.randint(1, 100)
 
 
 class TestCase:
    @mock.patch('somemodule.request')
    def test_function(self, mock_request):
        mock_request.return_value = {}    # 构造期望的返回值,我们默认外部调用按照约定是可以工作的,不会对其测试


这就是在单元测试中处理数据库和网络请求的方法。更多Python学习推荐:



本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写
扫一扫二维码分享