Overhave هو العمل المبرق لـ BDD: قابل للتطوير ، قابل للتكوين ، سهل الاستخدام ، استنادًا إلى مسؤول Flask و Pydantic.

يمكنك تثبيت Ovinghave عبر PIP من Pypi:
pip install overhaveواجهة الويب هي أداة أساسية لإدارة ميزات BDD. يتكون من:
معلومات - صفحة الفهرس بمعلومات اختيارية حول أدتك أو مشروعك ؛
الميزات ، عمليات الاختبار ، الإصدارات والعلامات:
يعطي واجهة لإدارة السجلات الميزات ويقدم معلومات حول المعرف ، مؤلف الأسماء ، الوقت ، المحرر وحالة النشر ؛ من الممكن البحث أو تحرير أو حذف العناصر من خلال لوحة البرنامج النصي.
يعطي واجهة لإدارة تشغيل الاختبار ويقدم معلومات حول.
يحتوي على إصدارات الميزات في المقابلة لتشغيل الاختبار ؛ تحتوي الإصدارات على روابط PR لمستودع GIT عن بُعد.
يحتوي على قيم العلامات ، والتي يتم استخدامها لعلامة الميزة.
اختبار المستخدمين - قسم لعرض وتكوين مستخدمي الاختبار ؛
مجموعات الأقسام الفرعية ؛
(في التنمية).
يمكن إنشاء ميزات Overhave و/أو تحريرها من خلال لوحة البرنامج النصي الخاصة في وضع تحرير الميزات. يجب أن تكون الميزة مسجلة حسب التطبيق ، والاسم الفريد ، وقائمة المهام المحددة مع التنسيق التقليدي `PRJ-NUMBER` ونص السيناريو.
تحتوي لوحة البرنامج النصي على جدول خطوات Pytest-BDD على الجانب الأيمن من الواجهة. يجب تحديد هذه الخطوات في وحدات التثبيت المناسبة وتسجيلها في التطبيق عند بدء التشغيل.
مثال على لوحة البرنامج النصي في وضع تحرير الميزة
يقوم Overhave بإنشاء تقرير جاذبية بعد تنفيذ الاختبارات في واجهة الويب. إذا قمت بتنفيذ الاختبارات يدويًا من خلال الاختبار ، فيمكن تحويل هذه النتائج إلى تقرير جاذبية أيضًا باستخدام أداة CLI. يحتوي هذا التقرير على أوصاف سيناريوهات كما هو موضح في الميزات.
مثال على تقرير جاذبية تم إنشاؤه بعد تنفيذ ميزة Overhave
يحتوي Overhave على وضع تجريبي خاص (في التطوير) ، والذي يمكن استخدامه للتظاهر الإطاري وتصحيح الأخطاء / الاختبار اليدوي. يوفر Framework نقاط دخول CLI لسهولة تشغيل الخادم في وضع التصحيح:
make up # start PostgreSQL database and Redis
overhave db create-all # create Overhave database schema
overhave-demo admin # start Overhave admin on port 8076 in debug mode
overhave-demo consumer -s test # start Overhave test execution consumerملاحظة : يمكنك تشغيل المسؤول في الوضع الخاص ، والذي لا يتطلب المستهلكين. يستخدم هذا الوضع Threadpool لتشغيل مهام الاختبار والنشر بشكل غير متزامن:
overhave-demo admin --threadpool --language=ruلكن وضع ThreadPool هذا أمر لا يمكن التغير في نموذج Kubernetes . لذلك ، يوصى بشدة باستخدام المستهلكين المقابلين بالضبط.
يحتوي Overhave على CLI توفر طريقة بسيطة لبدء واجهة خدمة الويب للخدمة وتشغيل المستهلك وتنفيذ عمليات قاعدة البيانات الأساسية. الأمثلة أدناه:
overhave db create-all
overhave admin --port 8080
overhave consumer -s publication
overhave api -p 8000 -w 4 ملاحظة : يأخذ بدء الخدمة مجموعة من الإعدادات ، بحيث يمكنك تعيينها من خلال بيئة افتراضية مع بادئة `OVERHAVE_` ، على سبيل المثال` `OVERHAVE_DB_URL` . إذا كنت ترغب في تكوين الإعدادات بطريقة أكثر وضوحًا من خلال حقن السياق ، فيرجى الاطلاع على الجزء التالي من المستندات.
يمكن تكوين الخدمة عبر حقن سياق التطبيق مع مثيل معدّي لكائن OverhaveContext. يمكن تعيين هذا السياق باستخدام وظيفة `set_context` لمثيل` `ProxyFactory` .
على سبيل المثال ، أعدت `my_custom_context` . لذلك ، يمكن تحقيق بدء تشغيل التطبيق باستخدام رمز المتابعة:
from overhave import overhave_app , overhave_admin_factory
factory = overhave_admin_factory ()
factory . set_context ( my_custom_context )
overhave_app ( factory ). run ( host = 'localhost' , port = 8080 , debug = True )ملحوظة :
`overhave_app` هو تطبيق القارورة المعدة مع تمكين بالفعل`overhave_factory` هي وظيفة لمثيل مخبأ LRU من Overhave`ProxyFactory` " ؛ يحتوي المثيل على وصول إلى مكونات التطبيق ، يستخدم مباشرة في `overhave_app` .`my_custom_context` هو مثال على تكوين السياق ، انظريحتوي Overhave على بنية مستهلك للمنتج ، استنادًا إلى تيارات Redis ، ودعم 3 أنواع المستهلكين:
`overhave_test_execution_factory` ؛`overhave_publication_factory` ؛`overhave_emulation_factory` . ملاحظة : يتمتع `overhave_test_execution_factory` بقدرة على حقن السياق ويمكن تخصيبه مع السياق المخصص باعتباره `overhave_admin_factory` .
يدعم Overhave هيكل المشروع الخاص الخاص به:
النهج الصحيح هو إنشاء دليل جذر (مثل "العرض التجريبي" داخل المستودع الحالي) الذي يحتوي على ميزات وتركيبات ودولة الخطوات .
يحتوي دليل الميزات على أنواع الميزات المختلفة كدليل منفصل ، كل منها يتوافق مع مجموعة الخطوات المحددة مسبقًا.
يحتوي دليل التركيبات على وحدات Pytest النموذجية المقسمة بواسطة أنواع الميزات المختلفة. يتم استخدام هذه الوحدات في عمليات اختبار Pytest-BDD المعزولة. من الضروري بسبب آلية خاصة لجمع خطوات Pytest-BDD.
يحتوي دليل الخطوات على حزم خطوات Pytest-BDD المقسمة بواسطة أنواع الميزات المختلفة أيضًا. كل خطوات الدليل الفرعي لديها خطوات خاصة بها وفقًا لنوع الميزة المدعوم.
لذلك ، من الممكن إنشاء بنية أفقية خاصة بك لاتجاهات المنتج المختلفة بخطوات فريدة وتركيبات Pytest.
ملاحظة : يتم استخدام هذا الهيكل في تطبيق Overhave . تتيح البيانات التي تم تشكيلها إمكانية تحديد نوع الميزة المسجلة في لوحة البرنامج النصي لواجهة الويب. أيضًا ، يحدد هذا الهيكل الخطوات التي سيتم عرضها في الجانب الأيمن من لوحة البرنامج النصي .
يحتوي Overhave على تنسيق نص خاص الخاص به ، والذي يرث Gherkin من Pytest-BDD مع تحديثات فريدة:
`@severity.blocker` ) ؛`PRJ-1234` ؛يوجد مثال على محتوى الميزة المملوءة في ميزة example.rst.
يطبق Overhave حل لعلامات Pytest باستخدام معلومات إضافية مخصصة:
أمثلة:
@disabled(not ready)
Feature : My business feature @disabled(TODO: https://tracker.myorg.com/browse/PRJ-333; deadline 01.01.25)
Scenario : Yet another business feature @xfail(bug: https://tracker.myorg.com/browse/PRJ-555)
Scenario outline: Other business featureإذا كان السبب يحتوي على عنوان URL ، فسيقوم Overhave بإرفاق رابط Allure للتقرير: بالنسبة للتعطيل - سيكون linktype.link ، لـ Xfail - linktype.issue.
Overhave لديها القدرة على تعيين روابط لخدمة المسؤول الخاصة بها في حالات اختبار جاذبية. سيتم تعيين الرابط تلقائيًا عند إنشاء تقرير جاذبية. يمكن تمكين هذه الوظيفة عن طريق إعداد متغير البيئة `OVERHAVE_ADMIN_URL` :
export OVERHAVE_ADMIN_URL=https://overhave-admin.myorg.com أيضًا ، لدى Overhave القدرة على تعيين روابط على ملفات الميزة في مستودع GIT. سيتم تعيين الرابط تلقائيًا عند إنشاء تقرير جاذبية. يمكن تمكين هذه الوظيفة عن طريق إعداد متغير البيئة `OVERHAVE_GIT_PROJECT_URL` :
export OVERHAVE_GIT_PROJECT_URL=https://git.myorg.com/bdd-features-repo لغة واجهة الويب هي المهندس افتراضيًا ولا يمكن تبديلها (إذا كانت ضرورية - من فضلك ، إنشاء `feature request` أو المساهمة بنفسك).
إن نص الميزة وكذلك الكلمات الرئيسية PYTEST-BDD BDD قابلة للتكوين مع نماذج إضافية تراكب ، على سبيل المثال ، تم تعريف الكلمات الرئيسية RUS بالفعل في Framework ومتاحة للاستخدام:
from overhave . extra import RUSSIAN_PREFIXES
language_settings = OverhaveLanguageSettings ( step_prefixes = RUSSIAN_PREFIXES )ملاحظة : يمكنك إنشاء رسم خرائط لقيمة البادئة الخاصة بك للغة:
from overhave import StepPrefixesModel
GERMAN_PREFIXES = StepPrefixesModel (
FEATURE = "Merkmal:" ,
SCENARIO_OUTLINE = "Szenarioübersicht:" ,
SCENARIO = "Szenario:" ,
BACKGROUND = "Hintergrund:" ,
EXAMPLES = "Beispiele:" ,
EXAMPLES_VERTICAL = "Beispiele: Vertikal" ,
GIVEN = "Gegeben " ,
WHEN = "Wann " ,
THEN = "Dann " ,
AND = "Und " ,
BUT = "Aber " ,
)يعطي Overhave القدرة على إرسال ميزاتك أو التغييرات الجديدة إلى مستودع GIT عن بُعد ، والذي يستضيفه Bitbucket أو Gitlab. يعد التكامل مع Bitbucket أصليًا ، في حين يستخدم التكامل مع Gitlab مكتبة Python-gitlab.
يمكنك تعيين الإعدادات اللازمة لمشروعك:
publisher_settings = OverhaveGitlabPublisherSettings (
repository_id = '123' ,
default_target_branch_name = 'master' ,
)
client_settings = OverhaveGitlabClientSettings (
url = "https://gitlab.mycompany.com" ,
auth_token = os . environ . get ( "MY_GITLAB_AUTH_TOKEN" ),
)تم إنشاء طلب السحب (لـ Bitbucket) أو Rember-Request (لـ GITLAB) عند النقر فوق الزر "إنشاء" طلب سحب على صفحة Run Test. هذا الزر متاح فقط لنتيجة نجاح اختبار تشغيل.
ملاحظة : واحدة من الحالات الأكثر شعبية لمصادقة Gitlab API هي مخطط OAUTH2 مع حساب الخدمة. وفقًا لهذا المخطط ، يجب أن يكون لديك رمز OAUTH2 ، والذي قد يكون له وقت قصير ولا يمكن تحديده من خلال البيئة. بالنسبة لهذا الموقف ، يحتوي Overhave على TokenizerClient مع TokenizerClientSettings - يمكن لهذا العميل البسيط أن يأخذ الرمز المميز من خدمة Gitlab المخصصة المخصصة.
يعطي Overhave القدرة على مزامنة حالة مستودع GIT الحالي مع قاعدة البيانات. وهذا يعني أنه يمكن تحديث ميزاتك ، الموجودة على قاعدة البيانات ، ومصدر التحديثات هو مستودعك.
على سبيل المثال : كان عليك إجراء استبدال البيانات بالجملة في مستودع GIT ، والآن تريد تقديم تغييرات إلى قاعدة البيانات عن بُعد. لا يمكن حل هذه المسألة غير السهلة باستخدام أدوات خاصة.
يمكنك تعيين الإعدادات اللازمة لمشروعك:
overhave sync run # only update existing features
overhave sync run --create-db-features # update + create new features
overhave sync run --pull-repository # pull git repo and run syncيمكنك اختبار هذه الأداة باستخدام وضع التجريبي الممتاز . بشكل افتراضي ، يتم إنشاء 3 ميزات في قاعدة البيانات التجريبية. فقط حاول تغييرها أو إنشاء ميزات جديدة وتشغيل أمر المزامنة - ستحصل على النتيجة.
overhave-demo sync-run # or with '--create-db-features'يدعم Overhave التحقق من صحة ملفات الميزات الحالية. حاول محاولة تحليل الميزات وملء تنسيق معلومات الميزة المحددة. إذا كان هناك أي مشكلة ، فسيتم طرح خطأ خاص.
overhave sync validate-features
overhave sync validate-features --raise-if-nullable-id
overhave sync validate-features --pull-repositoryونعم ، أنت قادر على تجربته مع الوضع التجريبي:
overhave-demo validate-features
overhave sync validate-features -r # --raise-if-nullable-idيعطي Overhave القدرة على تعيين ملف INDEX.HTML المخصص لتقديم. يمكن ضبط مسار الملف من خلال البيئة وكذلك تعيينه مع السياق:
admin_settings = OverhaveAdminSettings (
index_template_path = "/path/to/index.html"
) يوفر Overhave العديد من استراتيجيات التفويض ، والتي أعلنها `AuthorizationStrategy` التعداد:
يجب وضع الإستراتيجية المناسبة والبيانات الإضافية في `OverhaveAuthorizationSettings` ، على سبيل المثال ، يمكن تكوين استراتيجية LDAP على هذا النحو:
auth_settings = OverhaveAuthorizationSettings ( auth_strategy = AuthorizationStrategy . LDAP )
ldap_manager_settings = OverhaveLdapManagerSettings ( ldap_admin_group = "admin" )Overhave ينفذ وظائف للتفاعلات السحابية S3 ، مثل إنشاء الدلو وحذفه ، وتحميل الملفات ، والتنزيل والحذف. يوفر Framework القدرة على تخزين التقارير والملفات الأخرى في التخزين السحابي S3 البعيد. يمكنك إثراء بيئتك من خلال الإعدادات التالية:
OVERHAVE_S3_ENABLED=true
OVERHAVE_S3_URL=https://s3.example.com
OVERHAVE_S3_ACCESS_KEY= < MY_ACCESS_KEY >
OVERHAVE_S3_SECRET_KEY= < MY_SECRET_KEY >اختياريا ، يمكنك تغيير الإعدادات الافتراضية أيضا:
OVERHAVE_S3_VERIFY=false
OVERHAVE_S3_AUTOCREATE_BUCKETS=true سيقوم الإطار مع ممكّن `OVERHAVE_S3_AUTOCREATE_BUCKETS` بإنشاء دلاء التطبيق في التخزين البعيد إذا لم تكن الدلاء موجودة.
يحتوي Overhave على واجهة برمجة التطبيق الخاصة به ، استنادًا إلى Fastapi.
overhave openapi.json من خلال Swagger
يمكن عرض الاحتمالات الحالية من خلال Swagger المدمج - فقط قم بتشغيل واجهة برمجة التطبيقات وفتح http: // localhost: 8000 في متصفحك.
overhave api -p 8000 تحتوي الواجهة على تفويض من خلال مخطط OAUTH2 ، لذلك يجب عليك إعداد `OVERHAVE_API_AUTH_SECRET_KEY` للاستخدام.
في الوقت الحالي ، تقوم API بتنفيذ أنواع الموارد:
المساهمات مرحب بها للغاية.
يعد تثبيت المشروع سهلًا للغاية ويأخذ عدد قليل من الأوامر المعدة (قم بعمل ما قبل الوفاة فقط من أجل Ubuntu ؛ حتى تتمكن من تثبيت نفس الحزم لنظام التشغيل الخاص بك يدويًا):
make pre-init
make initيتم توفير إدارة الحزم عن طريق الشعر.
يمكن إجراء الاختبارات مع Tox. يتم استخدام Docker-Cormse لإعداد الخدمات والخدمة الأخرى ، مثل قاعدة البيانات. اختبارات بسيطة وبيانترات تنفيذ:
make up
make test
make lintمن فضلك ، انظر إنشاء الملف واكتشف اختصارات مفيدة. يمكنك إجراء اختبارات في حاوية Docker أيضًا:
make test-dockerيمكن بناء وثائق المشروع عبر sphinx و Simple Make Command:
make build-docsبشكل افتراضي ، سيتم بناء الوثائق باستخدام HTML Builder في دليل _build.
موزعة بموجب شروط ترخيص GNU GPLV2.
إذا واجهت أي مشاكل ، فيرجى الإبلاغ عنها هنا في قضايا القسم مع وصف مفصل.