init()
ed (belki de en iyi tasarım değil, yeniden yazma seçeneğidir) bağlı olarak tamamen farklı davranışı olan bir (python3) paketim var. Modül sadece bir kez init()
olabilir, ikinci kez bir hata verir. Bu paketi (her iki davranış) py.test kullanarak test etmek istiyorum. Not: Paketin niteliği iki davranışı karşılıklı olarak münhasır kılar, hem tekil bir programda her ikisini de istemenin olası bir nedeni yoktur.python'u yeniden başlatma (veya yeniden modülleri) py.test testlerinde
Test dizinime serveral test_xxx.py
modülüm var. Her bir modül paketi ihtiyaca göre (fikstür kullanarak) başlatacaktır. py.test
, python yorumlayıcısını bir kez başlattığından, tüm test modülleri bir py.test çalışmasında çalıştırılamıyor. Paketin ikinci bir init()
izin vermek için yamalamak, yapmak istediğim bir şey değil, çünkü açıklanamayan davranışlarla sonuçlanabilecek dahili önbellek vb.
- mümkün (
- güvenilir bir paket yeniden bir yol var (bu şekilde başka bir test-modülünde inits etkisinde olan) bir ayrı piton işlemde, her bir test modülü çalıştırmak için py.test söylemek mi tüm alt bağımlılıklar, vb. dahil)?
- Başka bir çözüm var mı (paketi bir fikstürde içe aktarmayı ve sonra da unimport'u düşünmeyi düşünüyorum, ama bu aşırı görünüyor)? , Çoklu işlemler kod bazen acı Ayrıca
from imp import reload import some_lib #do something reload(some_lib)
olan yeni süreçte her test başlatılması yaşayabilir, fakat:
onunla hiçbir deneyime sahip ama birkaç subprocesses başlayıp bu şekilde şeyler yapmak/kullanmak bu eklentiyi adapte olabilir: https://pytest.org/latest/xdist. html # running-tests-in-a-python-subprocess –
Tek bir dosyada pytest çalıştırmak mümkün ise ('pytext text/text_xyz.py), test_xyz dosyalarını bulmak ve her birinde çalıştırmak için bir program yazabilirsiniz. Alt işlem modülü ile ayrı işlem. Simeon tarafından başvurulan eklentinin yapması gereken şey budur. –
Teşekkürler. Pytest-xdist'e bakıldığında maalesef modül başına yeni bir alt işlem başlatmıyor. Gerçekten de şu anda 2 dizindeki test modüllerine sahibim: biri diğerini kullanarak, bir diğerini kullanıyor. Sonra dizin başına bir kez pytest koşarım. Bununla birlikte, bireysel çalışmaların geri dönüş değerlerinin ve test raporlarının birleştirildiğinden emin olmak için fazladan bir komut dosyasına ihtiyacım var. – Claude