Python基础-day15

2019-01-12  本文已影响0人  陈small末

list

​ 发邮件

​ 日志

​ 测试

​ 元类

发邮件

SMTP服务(打开)

用户名

密码(授权码 只要是涉及到程序里发送邮件用的是授权码 而不是登录密码)

标题:ALIBABA offer

内容:我们要说的话

发件人

还有退出

用途:邮件验证,监控线上API (Django 日志(专门监控所有API))

import smtplib
from email.mime.text import MIMEText

smtp_server = "smtp.qq.com" #你用的邮箱的SMTP地址
port = 25
sender = "493024318@qq.com" #邮箱用户名
pwd = "yaricwaaydxvbggb" #授权码

msg_str = "我的天啊" #邮件正文
msg = MIMEText(msg_str) #将字符串转成我们邮箱内容对象
msg["Subject"] = "来自达哥的问候" #标题
msg["From"] = sender

#SMTP的服务
server = smtplib.SMTP(smtp_server, port) #实例化
server.login(sender, pwd) #登录 验证
#发送邮件
server.sendmail(sender, ["liuda@1000phone.com", "854457314@qq.com", "a_supernova@126.com"], msg.as_string())
#退出
server.quit()

日志参考另一个文档

测试

​ 一个工种:

​ 分类:单元测试

​ 功能测试

​ 系统测试

​ 集成测试

​ 黑盒测试

​ 白盒测试

​ python:unittest(单元测试) selenium前端自动化测试

​ 测试用例:

​ 前提条件 运行调用和预期结果(测试人员写的)

unittest里类:TestCase(测试例子) TestSuite(测试集合)

import unittest
import HTMLTestRunner

def div(a, b):
    return a / b

class MyTest(unittest.TestCase):

    def test_div(self):
        res = div(4, 2)
        self.assertEqual(res, 2)

    def test_demo(self):
        self.assertDictEqual({"name":2}, {"name":1})

if __name__ == "__main__":
    # 实例化一个测试集合
    mysuite = unittest.TestSuite()
    tests = [MyTest("test_div"), MyTest("test_demo")]
    # 将测试例子 加入到测试集合
    mysuite.addTests(tests)
    # mysuite.addTest(MyTest("test_div"))
    f = open("res.html", "wb")
    runner = HTMLTestRunner.HTMLTestRunner(stream=f, title="测试1810", description="其实我是搞python")
    runner.run(mysuite)

元类【了解】

​ type是我们python内置唯一元类

​ 什么叫:创建类的类 当我们使用class关键字定义一个类的时候 实际上python就已经给我们创建了一个对象

​ 用type函数创建一个类

​ myclass = type(类名, (父类们), {属性和函数们})

例子

def add(self):
    print("我是add")
B = type("HelloB", (), {"name":"hehe", "my_add": add})
print(type(B))
print(B)
def echo(m):
    print(m)

# echo(B)
b = B()
print(b.name)
b.my_add()
自定义元类__metaclass__
# -*- coding:utf-8-*-
# __metaclass__
class MyType(type):
    # 创建对象的时候系统调用 比__init__调用要提前
    def __new__(class_meta, class_name, class_parents, class_attr):
        class_attr["address"] = u"深圳"
        res = {k.upper():v for k, v in class_attr.items()}
        return type.__new__(class_meta,class_name, class_parents, res)
__metaclass__ = MyType #那整个该文件的class的元类都将被影响
class He:
    pass
    # __metaclass__ = MyType

class She(He):
    pass

# h = He()
# print(h.address)
she = She()
print(she.ADDRESS)
# 当我们创建一个类的时候 python的解释器会在当前类找 __metaclass__字段 如果有就按照我们的元类要求来生成我们的类
# 如果当前类找不到 那就去父类里找 如果元类要求来生成我们的类 如果父类里也没有就去 模块层次去搜索 如果搜不到
# 就使用我们默认的type 给我们创建类
上一篇下一篇

猜你喜欢

热点阅读