美文网首页
Python基础-day15

Python基础-day15

作者: 陈small末 | 来源:发表于2019-01-12 14:41 被阅读0次

    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 给我们创建类
    

    相关文章

      网友评论

          本文标题:Python基础-day15

          本文链接:https://www.haomeiwen.com/subject/qlhvrqtx.html