国庆假第三天,1测试自己写的服务器资产管理server端和client端程序;2复习生成器等知识

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了国庆假第三天,1测试自己写的服务器资产管理server端和client端程序;2复习生成器等知识相关的知识,希望对你有一定的参考价值。

一、检测自己写的CMDB出现的BUG

  1、server端在视图函数server中

    技术分享

 

    在输入条件查询时,只取datefield数据的年月日部分写成了_date,应是__date。此外还有__year,__month,__day。

    条件查询中,除了__lt外还有:__lte小于或等于;__gt 大于;__gte大于或等于;__ne不等于(filter(slot__ne=‘5‘),也可以用exclude(slot=‘5‘));__iexact忽略大小写;__in成员属性;__startwith以…开头(有大小写之分);__endwith以…结尾(有大小写之分);__contains包含(有大小写之分);__istartwith、__iendwith忽略大小写的开头结尾;__range在什么范围内,后接一个元祖如filter(id__range=(1,200);

    pk查找类型,可以翻译成 (primary_key)__exact.下面两个语句是等价的:

polls.get_object(id__exact=3)
polls.get_object(pk=3)
pk 也可以通过连接进行查询。下面两个语句是等价的:
choices.objects.filter(poll__id__exact=3)
choices.objects.filter(poll__pk=3)

    2、server端在插件Memory和Nic类的process方法中

    技术分享

    一步一步打印,发现程序在这停止,原因是在筛选不出内存对象集合。

    在数据更新测试记录更新日志时发现,即使新旧容量一致也做更新日志,即不管怎样都判断新旧值不相等

    技术分享

 

原因为client端发过来的容量数据类型为int,而数据库中容量数据类型为float,所以需先做数据类型转换再对比,如红框所写。

 

技术分享

技术分享

    

    3、在server端中插件server.py

技术分享

 

在对basic_info和board_inf两个字典进行合并时写成如上红框所写的错误操作,发现永远无数据,这里牢记,dict1.update(dict2)没有返回值,仅是对dict1进行了操作,即用dict2的内容更新dict1。注意,若dict2中重复了dict1的键,则更新,dict2值为update后的值,dict2中键dict1没有则dict1增加。另外,dict2中的键只能是字符串否则会报错!也复习了字典和集合一些实用但生疏的方法。

dictMerged2=dict(dict1, **dict2) 

方法等同于:

dictMerged=dict1.copy()
dictMerged.update(dict2)

或者

dictMerged=dict(dict1)
dictMerged.update(dict2)

dict.pop(key)与del(key)区别在于pop方法有返回值,另字典的fromkeys、items、iteritems、iterkeys、itervalues。字典的键只能是不可变类型。

 

技术分享

技术分享

        集合主要用于检测成员资格,是无序的,为可变的hashable,另外集合的元素只能是不可变的(可散列的)。所以集合中不能包含集合,若想集合中带集合要用到fronzenset,它是不可变类型

技术分享
技术分享

 

         通过对BUG的一步一步排查,发现有助于理解整个程序的运行机制,了解到程序是如何一步一步走的。

二、复习生成器的知识

   任何包含yield语句的函数称为生成器。

技术分享

注意传值是传给yield不是foodyield的返回值是写在yield之后,后面不写默认返回None,这点可以用到连个函数协同工作,返回一个状态值如False,使传值函数停止运行

 

    技术分享

另外,列表推导式中

技术分享

os模块中os.walk(directory)遍历一个目录下所有的子目录和子文件,得到也是一个生成器。

 

 

 

   

 








以上是关于国庆假第三天,1测试自己写的服务器资产管理server端和client端程序;2复习生成器等知识的主要内容,如果未能解决你的问题,请参考以下文章

国庆第三天如何避免无聊

国庆假第四天,1API代码;2一些概念代码等

国庆七天乐——第三天

国庆第三天作业完成程度

java第三天

Beta冲刺:第三天