感谢 帮大忙了!但是有一丢丢疑惑:
我的队列读取 csv 里 100 条数据,总用户量=100,每秒启动 10 个用户。
这时在空队列的时候直接 exit(0) 结束主进程,最后在 report 里只发了 2、30 个请求..此处是不是不应该 exit
大佬 请教一下 allure2 可以自己指定一个端口号启动 web 服务吗
楼主在文章里面说了一句:开发对待技术的优势往往是深度,测试往往是广度。
大概在我想来就是测试能考虑到的方面更多。然后你需要作为一个中间人来协调各方,大概这就是立足点吧。(小声 bb)
class mytest(unittest.TestCase):
def setUp(self):
self.para = 0
print('setup: %s' % self.para)
def test01(self):
self.para = 2
print('t1: %s' % self.para)
def test02(self):
self.para = 4
print('t2: %s' % self.para)
def test03(self):
self.para = 6
print('t3: %s' % self.para)
def tearDown(self):
pass
结果:
Ran 3 tests in 0.000s
OK
setup: 0
t1: 2
setup: 0
t2: 4
setup: 0
t3: 6
给他点一下归零啊
感觉工作一年多了,自己身为测试人很浮躁很迷茫,听君一席话 不说少读十年书,半年也该有的 哈哈哈哈
sudo 不能丢啊 手动斜眼笑
核心是不可能核心的,这辈子都不可能,bug 测不出来,线上天天爆炸,只好水水论坛,这里的老哥讲话超好听,我超。。。
咳咳,跑题了,我也认同开发是核心的观点,产品决定价值,开发决定上限,测试决定下限。。。大概就是我的理解吧
了解一下 →.→
老哥你说对了,使用新的后端框架之后,凡事后端返回的 http 状态码为 403 的都被移动重定向到移动导航页了。。。,之前请求失败,status_code 均返回 200, 前后端处理异常的错误状态码都在接口返回的字段里面定义,这一次直接返回了真实的 http 状态码结果就拉闸了。
一般似乎都是 python manage.py migrate 这样初始化数据库的吧 0.0
看了下密码居然是明文的,,emmm 我觉得可以考虑将密码进行一种加密算法后存到数据库
然后用户登录的时候用同样的加密算法加密后和数据库的数据进行校验,这样安全性会不会好一点?
马克,,一直想学一下,又懒。。懒是原罪啊
感谢楼主的分享。
弄了一天终于部署到自己服务器上了,django 部署的坑是真不少。。
一行就厉害了。。
例行献丑。..初学。哈哈
m = [[1, 2, 3, -1], [4, 5, 6, -2], [7, 8, 9, -3]]
n = []
for x in range(0, len(m[0])):
a = []
for y in range(0, len(m)):
a.append(m[y][x])
n.append(a)
print(n)
这个文案确实是招聘届的一股清流。赞。
我会大概考虑几个方面:
上班忙里偷闲,答一个 哈哈哈
如果让我这么做的话我会把 aseert 简单封装一下,在 catch 异常退出浏览器之后,再次调用启动浏览器共用方法,事先在 pageobject 中提供通用的进入该页面方法。 可能我的方法比较笨,哈哈哈。
import unittest
from selenium import webdriver
def newChrome(page):
dr = webdriver.Chrome()
''''go to page'''
print('open a new webdriver!')
return dr
#将assert方法简单封装
def compare(msg, target, name, page, dr):
try:
assert msg == target
print('%s pass \n'%name)
return dr
except Exception as e:
print('an error occured in %s'%name)
dr.quit()
print('webdriver quit! \n')
return newChrome(page)
#测试类DEMO
class Mytest(unittest.TestCase):
@classmethod
def setUpClass(self):
self.dr = webdriver.Chrome()
print('setUp')
@classmethod
def tearDownClass(self):
self.dr.quit()
print('tearDown \n')
def testcaseA(self):
self.dr = compare('1', '1', 'testcaseA', 'page', self.dr)
def testcaseB(self):
self.dr = compare('1', '2', 'testcaseB', 'page', self.dr)
def testcaseC(self):
self.dr = compare('2', '2', 'testcaseC', 'page', self.dr)
if __name__ == '__main__':
unittest.main()
在一个测试类下的 testcase 是按照 ASCII 的顺序执行,不同文件下还真没研究过。。
干货啊,赞一个
今天上线的东西太多了,,都没空来逛社区。。
核心代码如下:
driver = webdriver.Chrome()
driver.maximize_window()
driver.get('http://127.0.0.1:5000/HimoMP')
js = "document.getElementById('Title').style.display='block'" #编写JS语句
driver.execute_script(js) #执行JS
contentText = driver.find_element_by_id('Title').text #定位元素
print(contentText) #验证结果
driver.quit()
部分 HTML 页面:
<header id="header">
<a href="#" class="logo"><strong id="Title" style="display: none">AAAA</strong></a>
</header>
执行结果:
127.0.0.1 - - [16/Nov/2017 19:14:56] "GET /HimoMP HTTP/1.1" 200 -
127.0.0.1 - - [16/Nov/2017 19:14:56] "GET /static/css/main.css HTTP/1.1" 200 -
127.0.0.1 - - [16/Nov/2017 19:14:56] "GET /static/js/jquery.min.js HTTP/1.1" 200 -
127.0.0.1 - - [16/Nov/2017 19:14:56] "GET /static/js/skel.min.js HTTP/1.1" 200 -
127.0.0.1 - - [16/Nov/2017 19:14:56] "GET /static/js/util.js HTTP/1.1" 200 -
127.0.0.1 - - [16/Nov/2017 19:14:56] "GET /static/js/main.js HTTP/1.1" 200 -
127.0.0.1 - - [16/Nov/2017 19:14:56] "GET /static/css/font-awesome.min.css HTTP/1.1" 200 -
127.0.0.1 - - [16/Nov/2017 19:14:57] "GET /static/fonts/fontawesome-webfont.woff2?v=4.6.3 HTTP/1.1" 200 -
127.0.0.1 - - [16/Nov/2017 19:14:57] "GET /favicon.ico HTTP/1.1" 404 -
AAAA
[Finished in 9.5s]
亲测可用。
用 js 把 display 属性改成其他的,比如:block。
嘿嘿,也不知道你是不是这个意思,我的想法是将这个 testcase 作为一个公用的方法。然后在 testcase 中调用并且控制执行次数。
下面贴一小段 code。献丑了 哈哈。
import unittest
def add(x):
#读取数据,转化为数组、字典、矩阵等。
a = [1, 2, 3, 4]
b = [5, 6, 7, 8]
#业务计算逻辑。
return (a[x] + b[x])
class MyTest(unittest.TestCase):
def setUp(self):
print('setUp')
def test_case_B(self):
#可以返回数组长度作为循环停止的条件,视具体情况定。
for x in range(0, 4):
print(add(x))
#用断言对返回的结果做判断。
def tearDown(self):
print('tear down')
if __name__ == '__main__':
unittest.main()
执行结果如下:
setUp
6
8
10
12
tear down
----------------------------------------------------------------------
Ran 1 test in 0.000s
OK
[Finished in 0.1s]
其实对手机来说手指上划的操作和你鼠标点着不放拖动的效果是一样的。 因为微信页面一般也是一个 H5 页面。 一开始我就看了标题以为是 selenium 然后发现是 appnium 哈哈,溜了。不过可以发我一个页面地址让我去试试么。
那你尝试使用 actionchains 里面 click_and_hold() 和 move_to_element() 或者 move_to_offset() 等等 拿不到具体页面也没法直接给你代码。。 =,=