单元测试和Linux系统

unitTest

  • 单元测试 :是用来对一个模块/一个函数/一个类来进行正确性检验的测试工作

  • 单元测试的四个核心:

    test case(测试用例):一个py文件就是一个测试用例

    test suite(测试套件):测试用例的集合

    test runner(测试运行器):执行测试套件

    test fixture(测试环境数据准备和数据清理或者测试脚手架)

  • test case(测试用例):一条用例就是一个完整的测试流程

    1.步骤

    1)导入 unittest 模块,被测文件或者其中的类

    2)创建一个测试类,被继承 unittest.TestCase

    3)重写 setUp 和 tearDown 方法(如果有初始化条件和结束条件)

    4)定义测试函数,函数名以 test_开头。测试用例

    5)在函数体中使用断言来判断测试结果是否符合预期结果

    6)调用 unittset.main()方法运行测试用例--------无此方法也是可以运行

    2.设置 setup 和 teardown:每次用例执行前都会执行初始化条件和结束条件

    #测试网站搜索
    def web_search():
        print("网站搜索功能")
        return 10
    import unittest
    class MyTest(unittest.TestCase):
        # def setUp(self) -> None:
        #     print("测试用例初始化")
        # def tearDown(self) -> None:
        #     print("测试用例回收资源")
        @classmethod
        def setUpClass(cls) -> None:
            print("测试用例初始化")
        @classmethod
        def tearDownClass(cls) -> None:
            print("测试用例回收资源")
        def test_01(self):
            print("Case--->test_01方法被执行")
            ret = web_search()
            self.assertEqual(20,ret)
    
        def test_02(self):
            print("Case--->test_02方法被执行")
        #该方法没有已test开头,不会执行
        def t_03(self):
            print("Case--->test_03方法被执行")
    

python2 VS python3

  • print

    • python2中print为输出语句
    • Python3中print是一个函数
  • range和xrang

    • range()在Python2中会得到一个列表,xrange(1,3)得到一个生成器
    • 在Python中是生成器,没有xrange
  • 字符串

    • Python2中存储字符串,底层使用ascii编码
    • python3存储字符串,使用的是Unicode
  • 异常处理

    python2

    try:
        print 1/0
    except Exception,e:
        print e
    
  • 打开文件

    python2有多种打开方式

    f = file()

    f = open()

    f = file("1.txt","w")
    f.write("hello world")
    f.close()
    
  • 标准输入

    python2有两种标准输入

    info = raw_input("提示消息:"),输入数据全部转换为字符串

    info =input("提示消息:"),输入什么就输出什么数据类型,输入字符串加引号

  • 除法操作:/

    python2: /表示的是整除,加上浮点数就是真实除法

    python3:/表示除法,//表示整除

虚拟机

  • 开启虚拟化

    以thinkpad为例,开机按F1,切换security页面,visualization选项,将后面的disable修改为enable,F10保存
    

操作系统

  • 承上启下的作用

  • 桌面系统:windows,Mac,Linux

  • 移动设备操作系统:安卓(linux),IOS

网络配置

windows查看ip地址  ipconfig
linux查看ip地址    ifconfig
ping ip地址

NAT共享模式:虚拟机共享当前宿主机的网络

桥接模式:虚拟机直接连接物理网络

配置之前先用ping命令查看是否ping通,不通说明地址没有被占用
1.找到ip地址配置文件
su - root
cd /etc/sysconfig/network-scripts
gedit ifcfg-ens33
#注释BOOTPROTO="dhcp" 
# 静态 IP 地址分配 BOOTPROTO="static" 
# 配置 IP 地址 IPADDR=10.10.12.120
# 配置子网掩码 NETMASK=255.255.255.0 
# 配置DNS DNS1=114.114.114.114 (或者8.8.8.8)
# 配置网关 GATEWAY=10.10.12.1

#修改完之后,重启网络
systemctl restart network
  • 防火墙设置

    CentOS 7 关闭防火墙 
    – 关闭防火墙:systemctl stop firewalld 
    – 关闭开机启动:systemctl disable firewalld 
    – 查看关闭状态:systemctl status firewalld
    
  • 终端提示符

    root@localhost 
    1.root:用户名
    2.localhost:主机名
    3./home:目录,路径
    4.$ :用户类型($普通用户,#管理员用户)
    cd 切换目录
    ls 查看文件
    

    linux文件系统

    bin可执行的命令文件夹   dev设备文件  home普通目录家目录  lib64  mnt  proc  run   srv  tmp  var
    boot  etc配置文件  lib系统依赖库   media  opt  root  sbin  sys系统文件  usr
    
  • WinSCP软件使用,windows下的客户的图形软件

    双击打开,New session
    hostname:ip地址
    user name:用户名
    password:密码
    
  • 帮助命令,是命令行的帮助文档,可以以友好的方式查看该命令的常规方式和其他选项

    -h 或者--help 选项:用于查看指定命令的帮助信息 
    格式: ls --help 
    
    which 命令:用于查看指定命令在文件系统环境变量中的位置 
    格式: which 命令 
    
    whereis 命令:用于查看指定命令在文件系统中的位置 
    格式: whereis 命令
    man 命令
    
  • 系统常见命令

    ls:查看指定路径中的文件 
    cd:改变当前工作路径
    pwd:查看当前工作路径
    ifconfig:查看当前网络配置信息
    poweroff:关闭计算机
    shutdown:关闭计算机
    reboot:重启计算机 
    grep:数据检索命令
    |:管道符号,连接多个命令
    find:文件检索命令
    
    • ls 查看

      ls path 命令  ,用于查看path下的文件列表 list files
      -a:用于查看所有文件,包括隐藏文件
      -l:列表方式查看文件信息,包含文件权限,所属用户,组,文件大小
      -R:递归方式查看当前文件下的所有子文件
      
    • cd:进入指定文件夹 cd path

      cd /home/han
      cd:直接回车,进入当前用户家目录
      cd ~:进入当前用户家目录
      	root用户,/root/
      	han用户,/home/han
      
    • shotdown:用命令关闭计算机,可以延时

      shutdown -r now :立刻重启系统
      shutdown -r 10 :10分钟后重启
      shutdown -r 17:30 :指定时间重启
      shutdown -c :取消shutdown命令操作
      
    • grep:数据检索命令

      -v 显示不包含匹配文本的所有行
      -n 显示行号
      -i 忽略大小写
      grep fib demo_01迭代器.py  在当前目录的demo_01文件中查找fib字符
      grep info *.log #在所有的.log文件中找info
      grep -i fib demo_01迭代器.py  在当前目录的demo_01文件中查找fib字符,忽略大小写
      grep -in fib demo_01迭代器.py 在当前目录的demo_01文件中查找fib字符,忽略大小写,显示行号
      
      
    • |:管道符号,连接多个命令,将第一个命令的输出结果作为第二个命令输入

      ls|grep demo,在当前目录搜寻包含demo名称的文件
      
    • find:文件检索命令

      #查看当前文件所有后缀为.py的文件
      find ./ -name "*.py"
      #查看当前文件目录所有以大写字母的文件
      find ./ -name "[A-Z]*"
      #查看/tmp目录下小于2M的文件
      find /tmp -size -2M
      #查找当前目录权限为777的文件或目录
      find ./ -perm 777
      
  • 文件操作命令:主要用于文件/目录的管理,包含文件的创建、重命名以及删除,文件夹的创建,

    重命名以及删除,文件/目录的复制、剪贴等操作

    命令 描述
    echo 信息打印,echo "文本信息"
    touch 创建文件 touch 文件名称
    cp 复制文件 cp 源文件 目标文件 ,将源文件复制到目标文件
    mv 移动文件 mv 源文件 目标文件 ,将源文件移动到目标文件
    mkdir 创建目录 mkdir 文件夹名称
    rm 删除文件 rm(-r递归删除,-f忽略提醒) 文件名
  • 压缩解压命令

    命令 描述
    tar 文件归档
    gzip .gz格式压缩
    bzip2 .bz格式压缩
    zip .zip格式压缩
    xz .xz格式压缩
    • tar :归档命令,可以将多个文件打包成一个文件,也可以将打包的文件拆分成多个文件

      -c 创建打包文件
      -v列出归档过程
      -f指定文件名称,f后面一定.tar文件
      -x解开文档
      -t列出文档中包含的文件
      
      tar -cvf target.tar file1 file2 file3   可以将多个文件打包成target.tar文件
      tar -xvf target.tar 将target.tar中文件释放到当前目录
      tar -tvf target.tar 查看target.tar包含的文件列表
      
    • gzip:通常和tar归档一起用,不能压缩目录

      gzip demo.tar  压缩
      gzip -d demo.tar.gz  解压
      
    • bzip2,zip,xz

      bzip2 -k 文件.tar  ,压缩后文件后缀.tar.bz2
      bzip2 -d 文件.tar.bz2  解压  或者bunzip2  文件.tar.bz2
      
      zip -r 文件.tar
      unzip 文件.zip
      
      xz -z 文件.tar 压缩文件
      xz -d 文件.xz  解压
      

权限管理命令

文件权限管理是 Unix/Linux 系统中最重要的一部分,因为有完善的权限体系,所以系统的安全 性和稳定性以及可靠性非常高。

u/g/o/a 含义
u 该文件的所有者
g 该用户的所有者所属组,用户组
o other表示其他以外的人
a all表示这三者都是
r/w/x 含义
r read,表示可读,如果没有r权限,无法通过ls查看目录内容
w write,表示写入
x excute,表示可执行
字母 说明
r 读取权限,数字代码“4”
w 写入权限,数字代码2”
x 执行权限,数字代码“1”
- 不具备任何权限
touch 111.txt
增加操作权限
chmod u+x 111.txt
没有读的权限
chmod 333 111.txt
  • 普通用户添加管理员权限

    修改/etc/sudoers
    su - root 切换到root用户
    修改权限,chmod 741 sudoers
    vim sudoers
    找到下面一行添加
    root	ALL=(ALL) 	ALL
    han		ALL=(ALL) 	ALL
    修改完毕,han账号可以获取root进行操作
    
  • 用户管理命令

    Unix/Linux 系统管理超级用户 root 下可以创建多个管理员用户或者普通用户,不同的用户可以 同时远程登录系统各自独立完成任务,也就是多用户多任务操作。

    useradd 增加用户,在系统中创建一个用户

    userdel 删除用户,将系统中的某个用户删除

    passwd 修改指定用户密码

    切换到root用户 su - root ,su - , su - 账号
    useradd增加一个用户,在系统中创建一个zhang用户
    useradd zhang  此时/home/多了一个zhang目录
    passwd  zhang  修改用户张的密码
    su - zhang 切换到张用户
    此时在张用户中是无法添加用户(zhang 不在 sudoers 文件中。此事将被报告)
    
    userdel zhang 删除张用户,但是目录还存在
    如果把进程被占用就杀死进程
    kill -9 进程号
    su - zhang  user zhang does not exist,说明用户已被删除
    
    查看有哪些用户  cat /etc/passwd
    han:x:1000:1000:han:/home/han:/bin/bash
    zhang:x:1001:1001::/home/zhang:/bin/bash
    liu:x:1002:1002::/home/liu:/bin/bash
    自己创建用户在最后
    用户名
    x:密码
    1000:用户ID
    
  • 系统管理命令

    系统管理命令,是针对系统信息进行查看、配置以及维护的操作命令,类似 windows 系统中的 任务管理器之类的。

    free -h   查看当前计算机内存使用情况
    df -h  查看当前系统磁盘使用情况
    top  查看系统进程信息,类似windows中的任务管理器
    kill 进程号  结束指定的进程 kill -9 发送信号给进程,你被终结了,数字9表示无条件退出(一共1-30个信号)
    进程管理命令 ps 命令用于查看和检索指定的进程信息
    ps -ef|grep sshd
    
  • 软件管理命令

    yum list: 查看已安装的软件
    yum search 名称,查看包含此名称的软件
    yum search python3
    yum install python3.x86_64
    yum remove 名称  删除程序包
    
  • SCP命令

    格式:scp -r 要复制的绝对路径下的文件  用户@IP: 地址(目标主机路径)
    -r 文件夹目录
    
    克隆虚拟机
    右击-->管理-->克隆-->下一步-->虚拟机当前状态-->创建完整克隆-->选择名称和位置-->完成
    修改主机名:hostnamectl set-hostname node1 ,将主机名修改为node1
    
    scp -r /home/han/demo_01迭代器.py han@10.10.12.135:/home/liu
    此时 Permission denied,没有权限进去目标主机目录,修改目标主机目录
    

文件内容查看命令

  • more 分页查看

    文本内容较多的情况下,使用 more 命令可以分页查看,

    more file  分页查看内容
    more +n file 从第n行开始显示内容
    more +/string file  从包含string字符的前两行开始展示
    操作方式
    空格:向下滚动一页
    回车:向下滚动一行
    b: 向上滚动一页
    q:退出浏览
    =:显示行号,只显示最下方当前行号
    
  • cat全文浏览

    cat file 全文浏览
    cat -n file 带行号全文浏览
    cat file1 file2 > file  合并文件
    tac file  倒序浏览
    
  • head 头部浏览,默认浏览前10行内容

    head -n 50 file 显示file文件前50行内容
    head -n -10 file  显示除了最后10行以外的内容
    
  • tail 尾部浏览

    查看文本文件尾部内容,默认查看 10 行,基本语法:

    tail -5 file  显示最后5行内容
    tail -n +50 file  从第50行显示内容
    tail -5f file   显示最后5行内容,并且持续监控文件内容
    
  • 其他查看方式

    less 分页浏览 分页浏览文件内容,类似 more 命令,基本语法 $ less file # 分页浏览 file 
    $ less -N file # 分页浏览 file,并展示行号 
    $ less -m file # 分页浏览 file,并显示百分比
    
    sort 排序浏览 sort 命令可以用来对文本文件中的内容进行排序查看,默认为字典升序
    $ sort 文件 # 字典升序查看文件内容 
    $ sort -r 文件 # 字典降序查看文件内容 
    $ sort -u 文件# 剔除文本文件中重复的内容 
    $ sort -n 文件# 按照数字排序
    
    sed 流式浏览
    sed -n "1,5p" 文件   显示1~5行内容
    sed -n "3,5{=;p}"   显示3~5行内容,并且打印行号
    sed -n "10p"  显示第10行内容
    

    vim编辑器

    • 命令模式

    • 输入模式

    • 末行模式

      命令模式:按一下ESC,即可进入命令模式,此模式下可以使用各种合法的vi命令,此时从键盘上输入的任何字符都被当成命令来解释,命令合法,则执行相应动作
      
      输入模式:在命令模式下输入 i ,该模式下用户输入的任何字符都被当成文本保存起来,并显示在屏幕上,在输入过程如果想回到命令模式,按下ESC即可
      
      末行模式:用户按: 进入末行模式,此时vim会显示在窗口的最后一行
      
    • (1) 命令模式

      按键 描述
      x 删除光标所在字符,相当于delete
      X 删除光标前一个字符,相当于backspace
      dd 删除光标所在行,删除一行
      ndd n为数字,连续删除光标后n行
      yy 复制光标所在行,复制一行
      nyy n为数字,连续复制光标后n行
      p(小写),P(大写) 小写p复制数据粘贴在下一行,大写P数据粘贴在上一行
      u,ctrl+r 撤销, 反撤销
      G和gg G文档最后一行,gg文档第一行
      • ^ 所在行开头,$所在行尾部
    • (2) 编辑模式

      按键 描述
      i 光标前面插入字符
      I 行首插入字符
      a 光标后面插入字符
      A 行尾插入字符
      o 光标下一行输入字符
      O 光标上一行输入字符
    • (3) 末行模式

      命令 含义
      :w 保存文件
      :w! 强制保存
      :q 不保存退出
      :q! 不保存强制退出
      :wq 保存并退出
      :wq! 强制保存并退出

定时任务

  • 在某个指定时间点执行任务

  • at 一次性定时任务,crontab 周期性定时任务

    • at 命令添加一次性任务

      at -l :查看任务
      atrm n删除编号n的定时任务
      at 时间点 指定的时间点上,添加任务
      ctrl+D保存
      案例:
      在15:07 在/home/han/1.txt 输出 "hello"
      echo "hello" >> /home/han/1.txt
      打开新终端 ,tail -f 1.txt,  实时查看
      
      at:时间点(HH:MM)
      时间早于系统时间,默认第二天这个时间执行
      时间晚于系统时间,默认今天这个时间执行
      
    • 周期性定时任务

      通过crontab的命令,添加,编辑,删除任务

      crontab -l:列出所有的周期性任务

      crontab -e:编辑当前用户的周期性任务

      crontab -r:删除所有周期性定时任务

      crontab  -e 进入周期性任务编辑模式
      * * * * * 
      依次是:分钟,小时,天,月,星期
      *  :表示每一天的每小时的每分钟执行一次
      10:表示每一天的每小时的第10分钟执行
      5,10,20 :表示每一天的每小时的第5,10,20分钟执行
      5-10:表示每一天的每小时的第5分钟开始直到第10分钟结束
      
      案例:每分钟向/home/han/1.txt写入hello
      crontab  -e 进入周期性任务编辑模式,用vi编辑器打开一个文件
      * * * * * echo "hello" >> /home/han/1.txt
      打开新终端 ,tail -f 1.txt,  实时查看
      

单元测试和Linux系统

上一篇:Linux中“Argument list too long”解决方法


下一篇:Linux下修改文件所属用户和组