নাকেস্ট্যাটস সহ আমি কোনও ফাইলে একটি একক পরীক্ষা কীভাবে নির্দিষ্ট করব?


102

আমার কাছে টেস্টওয়েব.পি নামে একটি ফাইল রয়েছে যা ক্লাসে টেস্টওয়েব এবং টেস্ট_সোমথিং () এর মতো অনেক পদ্ধতিযুক্ত methods

আমি ক্লাসে প্রতিটি পরীক্ষার মতো চালাতে পারি:

$ nosetests test_web.py 
...
======================================================================
FAIL: checkout test
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/me/path/here/test_web.py", line 187, in test_checkout
...

তবে আমি পৃথক পরীক্ষা চালাতে পারে বলে মনে হচ্ছে না। একই পিডাব্লুডিতে চালানোর সময় এগুলি আমাকে "এ জাতীয় কোনও পরীক্ষা নয়" ত্রুটি দেয়:

$ nosetests test_web.py:test_checkout
$ nosetests TestWeb:test_checkout

এখানে কী ভুল হতে পারে?


আপনি যদি আপনার পরীক্ষার কেসগুলি বা একটি এসএসসিসিই পোস্ট করতে না পারেন তবে আপনাকে সাহায্য করতে পারে না , আমি আমার মেশিনে নাকের সাহায্যে ব্যবহৃত সিনট্যাক্সটি চেষ্টা করেছি এবং এটি ভাল কাজ করেছে।
জেফ ট্রেটনার

উত্তর:


148

আপনাকে অবশ্যই এটির মতো নির্দিষ্ট করতে হবে:, nosetests <file>:<Test_Case>.<test_method>বা

nosetests test_web.py:TestWeb.test_checkout

দস্তাবেজগুলি দেখুন


6
পৃথিবীর গ্রন্থাগারে কেন ':' এর পরিবর্তে '' ব্যবহার করা হয়? ;)
ওমিক্রন

2
একটি মডিউল এবং একটি শ্রেণীর মধ্যে অঙ্কিত করা সহজ করতে পারে?
ক্রিস

@ মাইক্রন যখন আমি ফাইলটি নির্দিষ্ট করেছিলাম তখন আমার কোনও আমদানি ত্রুটি ছিল না
gabeio

2
বাহ যে ভয়ানক, ক্লাসিক অজগর গ্রন্থাগার, বিদ্যমান ইন্টারফেসের জন্য যত্ন নেই
ডাগরুম

16

আপনি একটি মডিউল নির্দিষ্ট করতে পারেন:

nosetests tests.test_integration:IntegrationTests.test_user_search_returns_users

1
আমি জানি না এটি পাইথনের আলাদা সংস্করণ nosetestsবা কী, তবে সেই বাক্য গঠনটি ব্যর্থ হয়। কি করে কাজ, যদিও, হল: nosetests tests/test_integration:IntegrationTests.test_user_search_returns_users, যার অর্থ - ফাইল হিসেবে রেফারেন্স ফাইল, না পাইথন মডিউল ব্যবহার /বদলে.
dwanderson

1
@wwanderson উভয় ব্যবহারের নাক.ড্রেডহেডসস.আইও / ইয়েন / স্লেট / ইউএসএইচটিএমএল# সलेक्टিং-স্টেটস অনুসারে কাজ করা উচিত । আপনার ব্যর্থতা testsআপনার সেটআপের মডিউল না হয়ে হতে পারে ?
মাইকেলেল

1
আহা, ঠিক যে, আমি একটি ভুলে গেছি __init__.pyমধ্যে testsডিরেক্টরি। সাবাশ! ধন্যবাদ
ডোয়ান্ডারসন

11

অন্যান্য উত্তরগুলির মতো কমান্ড লাইনে নাম উল্লেখ করা কার্যকর হয় এবং দরকারী। যাইহোক, আমি যখন পরীক্ষার লেখার মাঝে থাকি, আমি প্রায়শই দেখতে পাই যে আমি যে পরীক্ষাটি চালাচ্ছি সেগুলি চালাতে চাই এবং কমান্ড লাইনে যে নামগুলি লিখতে হবে সেগুলি লিখতে বেশ দীর্ঘ এবং জটিল হয়ে উঠবে । এই ক্ষেত্রে, আমি একটি কাস্টম সজ্জা এবং পতাকা ব্যবহার করতে পছন্দ করি।

আমি এটির wipd("অগ্রগতি সজ্জাকারীর কাজ") সংজ্ঞায়িত করেছি :

from nose.plugins.attrib import attr
def wipd(f):
    return attr('wip')(f)

এটি একটি সাজসজ্জারকে সংজ্ঞায়িত করে @wipdযা wipএটি সজ্জিত বস্তুর উপর অ্যাট্রিবিউট সেট করবে । এই ক্ষেত্রে:

import unittest
class Test(unittest.TestCase):

    @wipd
    def test_something(self):
        pass

তারপর -a wipবেশী দিয়ে চিহ্নিত পরীক্ষা সঞ্চালনের সংকীর্ণ কমান্ড লাইনে ব্যবহার করা যেতে পারে @wipd

নামগুলিতে নোট করুন ...

আমি এই ধরণের সমস্যা এড়ানোর @wipdচেয়ে সাজসজ্জার জন্য নামটি ব্যবহার করছি @wip:

import unittest
class Test(unittest.TestCase):

    from mymodule import wip    
    @wip
    def test_something(self):
        pass

    def test_something_else(self):
        pass

importকরতে হবে wipপ্রসাধক সদস্য ক্লাসের আর সব ক্লাসে পরীক্ষা নির্বাচিত করা হবে। attribপ্লাগ-ইন চেক একটি পরীক্ষা পদ্ধতি অভিভাবক শ্রেণী যদি অ্যাট্রিবিউট নির্বাচিত খুব বিদ্যমান দেখতে এবং বৈশিষ্ট্যাবলী নির্মিত এবং পরীক্ষিত হয় দ্বারা attribকি করে পৃথকীকৃত স্থান উপস্থিত না। সুতরাং আপনি যদি পরীক্ষা করে থাকেন -a fooএবং আপনার ক্লাসটি থাকে foo = "platypus"তবে ক্লাসের সমস্ত পরীক্ষা প্লাগইন দ্বারা নির্বাচিত হবে।


3

একাধিক নির্দিষ্ট পরীক্ষা চালানোর জন্য, আপনি এগুলি কেবল স্থান দ্বারা পৃথক করে কমান্ড লাইনে যুক্ত করতে পারেন।

nosetests test_web.py:TestWeb.test_checkout test_web.py:TestWeb.test_another_checkout

0

আমার পরীক্ষাগুলিতে মডিউল নামের পরীক্ষাগুলি নির্দিষ্ট করে কাজ করে না

আপনাকে অবশ্যই আসল পথটি নির্দিষ্ট করতে হবে .py:

nosetests /path/to/test/file.py:test_function

এই সাথে nose==1.3.7


0

আমার প্রয়োজনটি ছিল অন্য উইন্ডো ডিরেক্টরিতে থাকা একটি টেস্ট ফাইলটিতে একটি পরীক্ষা চালানো - এটি অ্যানাকোন্ডা কমান্ড প্রম্পট থেকে নিম্নলিখিতভাবে করা হয়েছিল:

দৌড়ে nosetests থেকে:

(base) C:\Users\ABC\Documents\work\

কিন্তু test_MyTestFile.py এবং পদ্ধতিFile.py এতে ছিল:

 (base) C:\Users\ABC\Documents\work\daily\

একক পরীক্ষা চালানো পথ সহ সঙ্গে কোট নিম্নরূপ:

(base) C:\Users\ABC\Documents\work>nosetests "daily\\test_MyTestFile.py:MyTestClass.test_add_integers"

test_MyTestFile.py দেখতে এমন দেখাচ্ছে:

import methodsFile
import unittest

class MyTestClass(unittest.TestCase):

    def test_add_integers(self):
        assert methodsFile.add(5, 3) == 8

    def test_add_integers_zero(self):
        assert methodsFile.add(3, 0) == 3

মেথডফিল.পি এইরকম লাগছিল:

def add(num1, num2):
        return num1 + num2
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.