используя pytest и tox, запустите тест и, основываясь на этом тесте, запустите тесты последовательно - PullRequest
0 голосов
/ 23 октября 2019

Я написал несколько тестов, которые я хочу запустить параллельно, используя pytest -n 10 (команда, написанная в tox). Эти тесты используют некоторые процессы. Я написал тест, чтобы проверить, запущены ли эти процессы. Я хочу запустить этот тест, прежде чем запускать другие тесты параллельно. Короче говоря, я хочу запустить тест. Если этот тест пройден с использованием pytest, я хочу запустить какой-то тест параллельно. Если этот тест не пройден. Казнь должна быть остановлена. Я использую токсины и pytest. Я хочу написать эти условия в токсикате. а также есть ли способ запустить некоторые тесты последовательно, а некоторые параллельно.

    from io import StringIO
import fabric,re



fd = StringIO()
conn=fabric.Connection(ip, port=22, user="root", connect_kwargs={'password': password})
conn.get("/opt/CDOT-scscf/etc/scscf_defined_constants.cam","/tmp/scscf_conf.txt")
f=open("/tmp/scscf_conf.txt","r")
for i in f.readlines():
  if "IMS_PCSCF_ADDR "  in i :
    pcscf_ip=re.findall(r'[0-9]+(?:\.[0-9]+){3}',i)[0]
  if "IMS_ICSCF_ADDR "  in i :
    icscf_ip=re.findall(r'[0-9]+(?:\.[0-9]+){3}',i)[0]
  if "IMS_SCSCF_ADDR "  in i :
    scscf_ip=re.findall(r'[0-9]+(?:\.[0-9]+){3}',i)[0]
  if "IMS_AS_ADDR "  in i :
    tas_ip=re.findall(r'[0-9]+(?:\.[0-9]+){3}',i)[0]
  if "IMS_MRF_ADDR "  in i :
    mrf_ip=re.findall(r'[0-9]+(?:\.[0-9]+){3}',i)[0]
  if "IMS_DRA_ADDR "  in i :
    dra_ip=re.findall(r'[0-9]+(?:\.[0-9]+){3}',i)[0]
  if "IMS_SCSCF_ADDR_PORT" in i:
    scscf_port=re.findall(r'\d+',i)[0]
  if "IMS_PCSCF_ADDR_PORT" in i:
    pcscf_port=re.findall(r'\d+',i)[0]
  if "IMS_TAS_ADDR_PORT" in i:
    _port=re.findall(r'\d+',i)[0]
  if "IMS_ICSCF_ADDR_PORT" in i:
    scscf_port=re.findall(r'\d+',i)[0]
  if "IMS_MRF_ADDR_PORT" in i:
    scscf_port=re.findall(r'\d+',i)[0]
    dra_port=3868
conn.get("/opt/CDOT-dra/etc/diam_constants.cam","/tmp/dra_conf.txt")
f=open("/tmp/dra_conf.txt","r")
for i in f.readlines():
  if "DIAM_CDF_ADDR_1"  in i :
    cdf_ip=re.findall(r'[0-9]+(?:\.[0-9]+){3}',i)[0]
  if "DIAM_CDF_LCL_PORT_1" in i:
    cdf_port=re.findall(r'\d+',i)[1]
  if "DIAM_HSS_LCL_PORT_1" in i:
    hss_port=re.findall(r'\d+',i)[1]
  if "DIAM_HSS_ADDR_1 "  in i :
    hss_ip=re.findall(r'[0-9]+(?:\.[0-9]+){3}',i)[0]

def netstat():
 return conn.run("netstat -apn| grep cdotdra",hide=True).stdout

def test_ims_status():
  a=netstat()
  assert dra_ip in a,"DRA IS NOT RUNNING"
  assert icscf_ip in a,"ICSCF IS NOT RUNNING"
  assert pcscf_ip in a,"PCSCF IS NOT RUNNING"
  assert scscf_ip in a,"SCSCF IS NOT RUNNING"
  assert tas_ip in a,"TAS IS NOT RUNNING"
  assert hss_ip in a,"HSS IS NOT RUNNING"
  assert mrf_ip in a,"MRF IS NOT RUNNING"
  assert cdf_ip in a,"CDF IS NOT RUNNING"


Above is the test file tests_ims_status.py which I want to run at starting, which will be failed if any of the server is not running.

вот мой tox.ini

 [tox]
envlist =  py37

[testenv]
deps =
    pytest
    sysrsync
    pytest-xdist
    pytest-html
    pandas
    xlrd
whitelist_externals=echo
list_dependencies_command=echo

commands =
#    pytest -s {posargs}
     pytest -n 2 -v -s --html=C5.html --self-contained-html --disable-pytest-warnings tests/*

Итак, выше приведен файл tox.ini, который запускает всетесты параллельно. я хочу сначала запустить test_ims_status. Если это пройдено. затем запустите все тесты параллельно. и если это не удалось, не запускайте дальнейшие тесты. Я действительно извиняюсь за ошибки грамматики. Если вам нужно другое разрешение, пожалуйста, спросите.

...