入职这一段时间的总结,Don't Repeat Yourself.

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了入职这一段时间的总结,Don't Repeat Yourself.相关的知识,希望对你有一定的参考价值。

1.第一次接触到大型软件系统的开发,现在我们使用的是 python + flask +vue.js ,数据库:postgresql  

2. 不要在自己不懂的情况下复制代码,每次分析一段代码的时候,就跟以前做数学题一样,做多了真的就熟悉了。

3.一份代码总是需要不断的修补的,所以需要TDD也就是Test Driven Development。 当重要的代码输出的东西都受到检验,代码也有了足够的测试作为后盾时,才能放心的去改动代码,从长远的角度看,TDD 可以节约更多的开发时间以及保证更好的代码质量。

TDD:  进行编程时先把测试部分写好,当发现不能通过时,再进行编程以使测试通过。然后在这基础上适当地调整测试代码以实现更多功能,最后再编写代码使之实现。

 

技术分享 

 

单元测试: python unittest

“测试”指的是通过编写可以调用的代码(独立于你实际应用程序的代码)来帮助你确定程序中是否有错误,

  (1)为什么要测试?

  • 测试可以保证你的代码在一系列给定条件下正常工作
  • 测试能够确保对代码的改动不会破坏现有的功能
  • 测试迫使人们在不寻常条件的情况下思考代码,这可能会揭示出逻辑错误
  • 良好的测试要求模块化,解耦代码,这是一个良好的系统设计的标志

  (2)测试什么?

  • 测试相等性:最常用的断言是测试相等性,(断言实际值是否等于预期值)如果断言失败,开发者通常希望看到实际错误值。
            assert_equal(actual, expected_items)
            eq_(actual.get(id), expected_items.get(id))

     

  • 测试异常:测试经常希望检查在某个环境中是否出现异常。如果期待的异常没有抛出,测试将失败。
        def test_if_imoport_check_works(self):  #测试上传文件成功
            _url = ‘/‘             # 测试的接口
            _dir = ‘./‘            #准备好的测试文件(json)
    
            def pass_extensions(_file):
                filename, file_extension = os.path.splitext(_file)
                if file_extension in [‘.xlsx‘ ‘.cvs‘]:
                    data = {‘file‘: open(os.path.join(root, file), ‘rb‘)}
                    response = self.client.post(_url, data=data)
                    actual_data = json.loads(response.data)
    
                    assert_equal(response.status_code, 200)
                    assert_greater(len(actual_data), 0)
                    assert_greater(len(actual_data.get(‘file‘)), 0)
                    assert_is_none(actual_data.get(‘errors‘))   # 断言不会抛出错误
    
            for root, dirs, files in os.walk(_dir):
                [pass_extensions(file) for file in files]
    

      

  • 测试实际值不为空。
        def test_should_find_shipment_service(self):
        # 验证物流存在
        with open(‘./mocks/shipment-services.json‘, ‘r‘) as shipments: #获取准备好的物流信息
        # python open方法
            data = json.load(shipments)
        self.assertIsNotNone(data)
        #判定 data不为空
        actual = ShipmentService.query.get(random.randint(1, 5))
        
        def _assert_shipment_service(expected):
            self.assertEqual(actual, expected)
        self.assertIsNotNone(actual)
        [_assert_shipment_service(actual) for actual in data]    
        # 通过for 循环遍历出data的值
        
        assert_greater(actual.get(‘id‘), 0)
        assert_greater(actual.get(‘external_id‘), 0)
        assert_greater(actual.get(‘name‘), 0)   #判定 物流存在
     
    

      

4.代码调试

当代码出错时,在程序必要的地方加设断点,当程序运行到该行代码的时候,Pycharm会将程序暂时挂起,开始对程序的运行状态进行分析。

  (1)Debugger窗口分为三个可见区域:FramesVariables, 和 Watches。这些窗口列出了当前的框架、运行的进程,方便用户查看程序空间中变量的状态等。在Watches 中添加要查看的变量。对比错误信息。

  (2)Console窗口显示当前的控制台输出信息。 

 

5. 测试代码粒度

尽可能的保证测试代码覆盖到最多的问题。

 

6. vagrant 的入门使用。

 

以上是关于入职这一段时间的总结,Don't Repeat Yourself.的主要内容,如果未能解决你的问题,请参考以下文章

看完《Don't make me think》的总结

luogu P1260 工程规划(luogu wa)don't know way

You Don't Need jQuery

解决问题 “You don't have permission to access /index.html on this server.”

谈谈入职新公司1月的体会

Don't Be a Subsequence