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
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
找到下面一行添加
rootALL=(ALL) ALL
hanALL=(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, 实时查看
来源:https://www.icode9.com/content-3-697101.html