• 关于测试


    测试用例

    import datetime
    
    from django.test import TestCase
    from django.utils import timezone
    
    from .models import Question
    
    class QuestionModelTests(TestCase):
    
        def test_was_published_recently_with_future_question(self):
            """
            was_published_recently() returns False for questions whose pub_date
            is in the future.
            """
            time = timezone.now() + datetime.timedelta(days=30)
            future_question = Question(pub_date=time)
            self.assertIs(future_question.was_published_recently(), False)

    执行python manage.py test polls,会进行如下操作
        1 寻找 polls应用里的测试代码
        2 找django.test.TestCase 的子类,如QuestionModelTests
        3 创建一个特殊的数据库供测试使用,如,创建future_question,并不是在用户数据库创建,而是在一个测试数据库创建的
        4 在类中寻找测试方法—以 test 开头的方法
        5 使用assertls()方法,确认函数是否返回期望值

    Client

      Django 提供了一个供测试使用的 Client 来模拟用户和视图层代码的交互

           python shell UI

        from django.test import Client
        from django.urls import reverse
        client = Client()
        response = client.get('/')
        response.status_code
        
        response = client.get(reverse('polls:index'))  #请求应用polls的视图index
        response.status_code  #输出:200
        response.content  #输出:index视图对应html的内容
        response.context['latest_question_list']  #输出:<QuerySet [<Question: What's up?>]>

    关于测试例
      先写代码或先写测试用例,可根据实际情况来决定
      每增加一项功能,都要追加相应的测试用例,并且测试用例越多越好
      测试例过多,可能会失去控制,可在整体进行规划,可参考以下原则:
      对于每个模型和视图都建立单独的TestClass
      每个测试方法只测试一个功能
      给每个测试方法起个能描述其功能的名字

      当写完测试用例并通过后,可将其永远保留
      因为该测试用例的作用,实际上就是在监控对应的代码
      比如,将来修改其他代码时,可能无意间造成这段代码没有返回期望值
      则在修改后执行测试用例时,就会发现该bug

    Selenium
      Selenium是一款浏览器自动化测试工具
      它假装成是浏览器正在和站点进行交互,就像真人在访问网站一样
      Django提供了LiveServerTestCase与Selenium这样的工具进行交互

    代码覆盖率
      找出代码中未被测试部分的方法是检查代码覆盖率
      它有助于找出代码中的薄弱部分和无用部分
      如果无法测试一段代码,通常说明这段代码需要被重构或者删除

    持续集成
      对源代码进行自动化编译、测试、代码检查,以及打包程序、部署(发布)到应用服务器上

  • 相关阅读:
    自然二进制与格雷码的转换
    状态机小结
    FSM的几种策略
    跨越鸿沟:同步世界中的异步信号
    边沿检测技术
    门控时钟和时钟使能
    ALTERA器件中复位电路实现之-异步复位同步化
    同步复位
    Altera USB Blaster 仿真器(EPM240仿制版
    五、裸机烧写
  • 原文地址:https://www.cnblogs.com/shiliye/p/11655961.html
Copyright © 2020-2023  润新知