אתם בטח שואלים את עצמכם - למה שאכתוב פוסט על גרסה כל כך ספציפית של pip?
אז התשובה פשוטה. לפני מספר חודשים המפתחים של pip הכריזו על גרסה עם שינוי גדול ולפני כשבועיים בתאריך 30/11/20 יצאה גרסה 20.3 שכוללת שינוי די רציני. כל כך רציני שהמפתחים אשכרה עשו על זה סרטון.
חשוב לי לציין שפוסט הזה לא הולך לדבר על היכולות של pip או על איך משתמשים בו, כתבתי על זה קצת כאן.
מה בעצם הגרסה מגיעה לפתור?
אחד הפיצ׳רים החסרים של pip, שמשתמשים לא הפסיקו לבקש הוא dependency resolver.
עד היום בכל פעם כשהתקנו חבילות באמצעות pip הוא היה מתאמץ מאוד לספק לנו מבנה תלויות נכון לפי התלויות שסיפקנו לו אבל לא תמיד היה מצליח.
למה אני מתכוון:
נניח שביקשנו מ pip להתקין את החבילות הבאות:
pip install "six<1.12" "virtualenv==20.0.2"
בתמימותינו אנחנו נצפה שתתוקן לנו גרסה קטנה מ1.12 של הספריה six וגרסה 20.0.2 של virtualenv.
אבל מה קורה אם אחת מתתי התלויות של virtualenv בגרסה 20.0.2 היא six בגרסה שגדולה מ-1.12?
כלומר - בהרצת הפקודה שראינו למעלה, pip ינסה להתקין את החבילה six עם ההגבלה שניתנה לו, ימצא את גרסה 1.11 ויתקין אותה, לאחר מכן ינסה להתקין את virtualenv ואז יתקל בקונפליקט.
מה שעשינו כאן זה בעצם לבקש מ pip להתקין את six גם בגרסה קטנה מ1.12 וגם בגרסה גדולה מ1.12.
מה היה עד עכשיו?
עד הגרסה הנוכחית, שורת התקנה כזו הייתה מספקת לנו את הגרסאות הללו six==1.11.0
virtualenv==20.0.2. כלומר, six הייתה מותקנת בניגוד להנחיות של virtualenv, דבר שמן הסתם יכל לגרום לנו לבעיות בעבודה עם virtualenv. הרי כנראה לא סתם virtualenv ביקשו במיוחד גרסה שגדולה מ1.12.0.
מה קורה החל מגרסה 20.3?
החל מהגרסה החדשה pip לא יקבל יותר קונפליקטים כאלו ויזרוק שגיאה בעת התקנה כמו שניסינו לעשות.
הפלט שאנחנו הולכים לקבל במקרה יראה כך:
ERROR: Cannot install six<1.12 and virtualenv 20.0.2 because these package versions have conflicting dependencies.
The conflict is caused by:
The user requested six<1.12
virtualenv 20.0.2 depends on six<2 and >=1.12.0
To fix this you could try to:
1. loosen the range of package versions you've specified
2. remove package versions to allow pip attempt to solve the dependency conflict
למזלנו החברה של pip עבדו חזק על חווית המשתמש וקיבלנו פלט פשוט ואינטואיטיבי שמסביר לנו בדיוק מה קורה, ואפילו נותן לנו המלצות להתמודדות.
במקרה כמו שלנו עלינו לשאול את עצמינו - למה אנחנו מגיבילים את עצמנו לגרסה ישנה של six? עלינו להבין בדיוק
איך עוברים לגרסה החדשה בשלום?
החבר׳ה של pip פינקו אותנו בגרסאות 20.1 ו20.2 שמאפשרות לנו להשתמש בפיצ׳ר של החדש של dependency resolver בעת ההתקנה ולראות מה יקרה כשננסה להתקין.
לפני שנשדרג לגרסה החדשה, אנחנו נרצה לשדרג לגרסה 20.2 עם הפקודה: pip install pip==20.2
ה-flag יפעיל את הפיצ׳ר החדש של הגרסה ויתן לנו מידע מהימן בנוגע לתקינות התלויות שלנו.
סיכום
בפוסט דיברנו על הגרסה החדשה של pip בה נכנס לראשונה dependency resolver כברירת מחדל.
ניתן להבין למה המפתחים של pip טוענים שזה שינוי גדול - לאחר שדרוג לגרסה החדשה, הרבה מפתחים לא יוכלו להתקין את תלויות הפרוייקט שלהם וזה ידרוש מהם לבצע שינויים בתלויות.
על אף שהשינוי הופך את התקנת התלויות למגבילה יותר, זהו שינוי מאוד חיובי.
הגיע הזמן שנתחיל ללכלך את הידיים שלנו ולעבוד.. מה זה Visual Studio? Visual Studio של מיקרוסופט היא אחת מסביבות פיתוח המובילות והחזקות בשוק, המאפשרת למתכנתים לפתח תוכניות מחשב ואתרי אינטרנט וכמובן, והכי חשוב, בדיקות אוטומטיות. הגרסה הרשמית האחרונה שהוצאה לאור היא Visual Studio 2017. בוויז'ואל סטודיו ניתן לתכנת בשפות התכנות הבאות: C# (סי שארפ) - בשפה נתמקד ועליה ארחיב בהמשך הבלוג. C++ (סי פלוס פלוס) בגרסה מיוחדת שפותחה על ידי מיקרוסופט, עם הרחבות המאפשרות לכתוב איתה תוכנות לפלטפורמת דוט נט. VB.NET - מוגדרת כשפת פיתוח אפליקציות מהיר לממשקי משתמש (GUI) ומערכות עיבוד נתונים . #J - שפת תכנות דומה לג'אווה (הוסרה לאחר מאבק משפטי). F# - שפה המיועדת לתכנות פונקציונלי. TypeScript - שפת תכנות המכילה ומרחיבה את JavaScript. בנוסף ישנן המון הרחבות שניתן להוסיף על מנת לעבוד עם שפות כמו Python, NodeJS, AngularJS וכו'... לכל אחת מהשפות קיימים היתרונות, החסרונות והייעודים שלה. מה ההבדל בין גרסאות Visual Studio 2017? ל Visual Studio קיימות מגוון גרסא
לאחר שבפוסט הקודם דיברנו על הסיבות לבדיקות תשתית האוטומציה שלנו, היום נצלול לעומק הדברים ונדבר על סוגי הבדיקות השונים. לאחר שהשתכנענו והגענו להבנה שאנחנו עומדים לכתוב קצת (או הרבה) בדיקות לתשתית האוטומציה שלנו, חשוב שנבין אילו אופציות יש לנו, או, באילו דרכים אנחנו יכולים לבדוק את המוצר שלנו. פירמידת הבדיקות - סוגי הבדיקות השונים אני מגדיר את ההיכרות עם פירמידת הבדיקות ואת המחקר והשימוש בה, כאחת התקופות החשובות בקריירה שלי כבודק ומתכנת. בעיני, קריטי שכל בודק ומפתח יכיר את הפירמידה הזו ויבין בדיוק את הסיבה לסדר ולחישבות השלבים בה. הפירמידה מציגה ארבעה רבדים של בדיקות כאשר על כל אחד אכתוב פוסט מפורט בנפרד. כל בדיקה שאנחנו עושים או כותבים נופלת תחת אחד הרבדים הללו. הרבדים השונים וחשיבותם בדיקות יחידה - Unit tests: בעיני ובעיני רבים, בדיקות היחידה הן החשובות ביותר. בבדיקות היחידה נרצה לבדוק את היחידה הקטנה ביותר האפשרית לבדיקה - כמו מחלקה או פעולה. מטרת בדיקות היחידה היא לבדוק את הלוגיקה הספציפית שמבצעת הפעולה ועליהן לבודד משתנים נוספים שאינם הלוגיקה
לאחר שהבנו את יתרונות פיתוח האוטומציה ופיתחנו בדיקת אוטומציה ראשונה באמצעות NUnit הגיע הזמן שנגיע לתכלס.. כיום קיימים בשוק מגוון כלים בשוק, בסגנון קוד פתוח, שמגיעים על מנת להקל, ולתת גמישות ויכולות נוספות בנושא האוטומציה. מה זה Selenium? סלניום היא תשתית האוטומציה לדפדפנים הגדולה בעולם כיום. עולם הWeb מצעיד את עולם פיתוח התוכנה (יחד עם עולם המובייל), וכך גם עולם בדיקות ה Web. כאשר אנחנו מבצעים בדיקות אוטומטיות חשוב שתהיה לנו שליטה כמה שיותר גדולה על סביבת העבודה שלנו. תשתית Selenium, מגיעה על מנת לתת פתרון פשוט, נוח, וקל לתפעול לשליטה על דפדפנים (סביבת העבודה של עולם הWeb). באמצעות השליטה הנ"ל, ניתן יהיו לבצע תרחישי בדיקה אוטומטיים אשר יבטיחו את איכות המוצר אותו אנו בודקים. איך כותבים אוטומציה באמצעות Selenium? במדריך אציג בדיקה אוטומטית פשוטה בשפת C#, כמובן על בסיס תשתית הבדיקה NUnit. *המלצה - קריאת הפוסט הזה , תקל עליך מאוד. הקמת סט-אפ הבדיקה תחילה נפתח Visual Studio וניצור פרויקט חדש מסוג Class Library (לחיצה על ctrl+shift+N
תגובות
פרסום תגובה